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