本篇文章給大家帶來的內容是關於php中適配器模式的詳細解析(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所協助。
適配器模式(PHP實現)
e.g.
//目標角色
1.介面擁有多個方法
//源角色
1.只擁有部分部分方法
//適配器角色
1.委派調用源角色已經存在的方法
2.適配 增加用戶端需要其他方法
//用戶端
1.設定靜態方法
2.執行個體化源角色
3.通過構造方法將注入
適配器模式(Adapter)模式:將一個類的介面,轉換成客戶期望的另一個類的介面。適配器讓原本介面不相容的類可以合作無間。
【適配器模式中主要角色】
目標(Target)角色:定義用戶端使用的與特定領域相關的介面,這也就是我們所期待得到的
源(Adaptee)角色:需要進行適配的介面
適配器(Adapter)角色:對Adaptee的介面與Target介面進行適配;適配器是本模式的核心,適配器把源介面轉換成目標介面,此角色為具體類。
其實也就是你家牆上有一個兩口的插座(Adaptee),但你買了一個電風扇(Target)需要三個口的,這個時候你就需要一個插排(Adapter)。
類適配器採用“多繼承”的實現方式,帶來了不良的高耦合,所以一般不推薦使用。對象適配器採用“對象組合”的方式,更符合松耦合精神。
類適配器使用的是繼承
e.g.:
/** * 目標角色 */interface Target { /** * 源類也有的方法1 */ public function sampleMethod1(); /** * 源類沒有的方法2 */ public function sampleMethod2();} /** * 源角色 */class Adaptee { /** * 源類含有的方法 */ public function sampleMethod1() { echo 'Adaptee sampleMethod1 <br />'; }} /** * 類適配器角色 */class Adapter extends Adaptee implements Target { /** * 源類中沒有sampleMethod2方法,在此補充 */ public function sampleMethod2() { echo 'Adapter sampleMethod2 <br />'; } } class Client { /** * Main program. */ public static function main() { $adapter = new Adapter(); $adapter->sampleMethod1(); $adapter->sampleMethod2(); } }
對象適配器使用的是委派
e.g.:
/** * 目標角色 */interface Target { /** * 源類也有的方法1 */ public function sampleMethod1(); /** * 源類沒有的方法2 */ public function sampleMethod2();} /** * 源角色 */class Adaptee { /** * 源類含有的方法 */ public function sampleMethod1() { echo 'Adaptee sampleMethod1 <br />'; }} /** * 類適配器角色 */class Adapter implements Target { private $_adaptee; public function __construct(Adaptee $adaptee) { $this->_adaptee = $adaptee; } /** * 委派調用Adaptee的sampleMethod1方法 */ public function sampleMethod1() { $this->_adaptee->sampleMethod1(); } /** * 源類中沒有sampleMethod2方法,在此補充 */ public function sampleMethod2() { echo 'Adapter sampleMethod2 <br />'; } } class Client { /** * Main program. */ public static function main() { $adaptee = new Adaptee(); $adapter = new Adapter($adaptee); $adapter->sampleMethod1(); $adapter->sampleMethod2(); } }