/** * 适配器模式 :将某一个对象的接口适配为另一个 */ 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(); //适配器模式说的是同源,处理后适用不一样的对象 //若是不作适配处理可能会影响之前的功能,或者会任意添加方法,类的功能再也不单一,不方便之后的扩张
适配器模式 :将某一个对象的接口适配为另一个 ,能够用于同源可是须要不一样的处理状况php