<?php
/* 实例3 */
/* 抽象工厂 */
//青铜会员的打折商品
class BronzeRebateCommodity {
//描述
public $desc = '青铜会员的打折商品';
}
//白银会员的打折商品
class SilverRebateCommodity { public $desc = '白银会员的打折商品';
}
//青铜会员的推荐商品
class BronzeCommendatoryCommodity {
public $desc = '青铜会员的推荐商品';
}
//白银会员的推荐商品
class SilverCommendatoryCommodity {
public $desc = '白银会员的推荐商品'; }
//各个工厂的接口
interface ConcreteFactory {
//生产对象的方法
public function create($what);
}
//青铜工厂
class BronzeFactory implements ConcreteFactory {
//生产对象的方法
public function create($what){
$productName = 'Bronze'.$what.'Commodity';
return new $productName;
}
}
//白银工厂
class SilverFactory implements ConcreteFactory {
//生产对象的方法
public function create($what){
$productName = 'Silver'.$what.'Commodity';
return new $productName;
}
}
//调度中心
class CenterFactory {
//获取工厂的方法
public function getFactory($what) {
$factoryName = $what.'Factory';
return new $factoryName;
} //获取工厂的静态方法
public static function getFactory2($what) {
$factoryName = $what.'Factory';
return new $factoryName;
}
} //实例化调度中心
$center = new CenterFactory();
//获得一个白银工厂
$factory = $center->getFactory('Silver');
//让白银工厂制造一个推荐商品
$product = $factory->create('Commendatory');
//得到白银会员的推荐商品
echo $product->desc.'<br>';
//获得一个青铜工厂
$factory2 = CenterFactory::getFactory2('Bronze');
//让青铜工厂制造一个打折商品
$product2 = $factory2->create('Rebate');
//得到青铜会员的推荐商品
echo $product2->desc;

最新文章

  1. JS面试题及答案总结
  2. hdu3589 Jacobi symbol(二次剩余 数论题)
  3. java内存
  4. 《Programming WPF》翻译 第7章 6.视频和3-D
  5. Android常用动画alpha和rotate同时使用
  6. INNO SETUP卸载程序中加入自定义窗体
  7. Hibernate分页查询小结
  8. matplotlib根据Y轴数量伸缩画图的py脚本
  9. Winform开发框架中工作流模块的表设计分析
  10. 兄弟连学Python-3Python变量和数据类型
  11. Dijkstra算法 c语言实现
  12. jdk1.8的环境下打包成jdk1.6
  13. Python 之 Difflib
  14. 2.Handler处理器 和 自定义Opener
  15. 获取select 的 val 和 text [转引]
  16. 【python】解决No module named _sqlite3的问题
  17. HDU 2187 - 悼念512汶川大地震遇难同胞——老人是真饿了 - [大水题]
  18. Python中的魔术方法详解
  19. dddddddddddddddddd
  20. mysql只保留一条有效数据,删除其他重复的数据

热门文章

  1. Oracle 导入导出数据库
  2. android中依据不同分辨率dp和px的相互转算
  3. struts2在项目中的应用之下载
  4. [译]GLUT教程 - 笔划字体
  5. Linux进程的虚拟内存区域划分
  6. laravel学习之路1:认证相关
  7. py.test
  8. JSP 表单处理向服务器提交信息
  9. 转载:SQL 字符串操作函数
  10. 零基础学python-2.7 列表与元组