每日一模式之php的适配器模式
2016-01-04 00:00
561 查看
/** * 适配器模式 :将某一个对象的接口适配为另外一个 */ interface Seller{ public function sell(); } //场景:中草药,直接买,特别处理后卖掉 class HerbalMedicine { private $_medicine,$_pick_date,$_keep_time; public function __construct($medicine){ $this->_medicine = $medicine; } public function getMedicne(){ return $this->_medicine; } //and so on } //直接出售 class RedictMedicineSeller implements Seller{ private $_medicine; public function __construct($medicine_obj){ $this->_medicine = $medicine_obj; } public function sell(){ echo $this->_medicine->getMedicne()." redict sell \n"; } } $herbarl_obj = new HerbalMedicine("中草药"); $redict_obj = new RedictMedicineSeller($herbarl_obj); $redict_obj->sell(); //提取这个动作可能不仅仅是ExtractMedicineSeller 用到 //不能用ExtractMedicineSeller 的方法代替提取 class HerbalMedicineAdapter extends HerbalMedicine{ public function __construct($medicine){ parent::__construct($medicine); $this->extract($medicine); } public function extract(){ echo "extract medicine \n"; } } //比如提取出青蒿素处理后出售 class ExtractMedicineSeller implements Seller{ private $_medicine; public function __construct($medicine_obj){ $this->_medicine = $medicine_obj; } public function sell(){ echo $this->_medicine->getMedicne()." extract sell \n"; } } $herbarl_adapter_obj = new HerbalMedicineAdapter("中草药"); $extract_obj = new ExtractMedicineSeller($herbarl_adapter_obj); $extract_obj->sell(); //适配器模式说的是同源,处理后适用不同的对象 //如果不做适配处理可能会影响以前的功能,或者会任意添加方法,类的功能不再单一,不方便以后的扩张
适配器模式 :将某一个对象的接口适配为另外一个 ,可以用于同源但是需要不同的处理情况
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- PHP设计模式之装饰者模式代码实例
- php设计模式之单例模式实例分析
- 介绍php设计模式中的工厂模式
- PHP设计模式之适配器模式代码实例
- 深入浅出23种设计模式
- 浅谈c#设计模式之单一原则
- C#设计模式之观察者模式实例讲解
- C#设计模式之单例模式实例讲解
- 学习JavaScript设计模式(接口)
- 深入理解JavaScript系列(28):设计模式之工厂模式详解
- 面向对象设计模式的核心法则
- JavaScript设计模式之单件模式介绍
- 深入理解JavaScript系列(25):设计模式之单例模式详解