注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

php开发lnmp

《西安--木木》-经历丰富了生活。 架构师QQ群: 246695517

 
 
 

日志

 
 

抽象工厂模式  

2018-03-12 12:00:56|  分类: 设计模式--php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
php设计模式

<?php

/**
抽象工厂模式
*/
/**
定义:抽象工厂模式,先定义一个创建对象的接口,在子类中实例化类。
工厂方法模式让一个类的实例化延迟到子类。

属性:抽象工厂模式属于对象创建型模式。

备注:抽象类不能被实例化
*/


//抽象工厂
interface AbstractFactory{
public function chassis();//底盘
public function carBody();//车身
public function tyre();//轮胎
}

//nissan工厂
class NissanFactory implements AbstractFactory{
public function chassis(){
return new NissanChassis();
}
public function carBody(){
return new NissanCarBody();
}
public function tyre(){
return new NissanTyre();
}
}
//ford福特工厂
class FordFactory implements AbstractFactory{
public function chassis(){
return new FordChassis();
}
public function carBody(){
return new FordCarBody();
}
public function tyre(){
return new FordTyre();
}
}

//1,抽象产品:底盘
interface ChassisProduct{
public function getMaterial();//获取底盘材料
}
//具体产品:nissan底盘类
class NissanChassis implements ChassisProduct{
public function getMaterial(){
return '铁';
}
}

//具体产品:ford底盘类
class FordChassis implements ChassisProduct{
public function getMaterial(){
return '钢材';
}
}


//2,抽象产品:车身
interface CarBodyProduct{
public function getColor();//获取车身颜色
}

//具体产品:nissan车身
class NissanCarBody implements CarBodyProduct{
public function getColor(){
return '红色';
}
}

//具体产品:ford车身
class FordCarBody implements CarBodyProduct{
public function getColor(){
return '蓝色';
}
}


//3,抽象产品:轮胎
interface TyreProduct{
public function getSize();//获取轮胎大小
}

//具体产品:nissan轮胎
class NissanTyre implements TyreProduct{
public function getSize(){
return '60cm';
}
}

//具体产品:ford轮胎
class FordTyre implements TyreProduct{
public function getSize(){
return '75cm';
}
}


//客户端:code
//获取ford车
$ford_car = new FordFactory();
$ford_chassis = $ford_car->chassis();
$ford_carBody = $ford_car->carBody();
$ford_tyre = $ford_car->tyre();

echo $ford_tyre->getSize(),'<br/>';
echo $ford_carBody->getColor(),'<br/>';
echo $ford_chassis->getMaterial(),'<br/>';
//获取nissan车


  评论这张
 
阅读(23)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018