/*** 适配器模式 :将某一个对象的接口适配为另外一个 */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();//适配器模式说的是同源,处理后适用不同的对象//如果不做适配处理可能会影响以前的功能,或者会任意添加方法,类的功能不再单一,不方便以后的扩张
适配器模式 :将某一个对象的接口适配为另外一个 ,可以用于同源但是需要不同的处理情况