【目的】:將一個類的接口轉換成客戶希望的另外一個接口,Adapter模式使得原來由於接口不兼容而不能一起工作的那此類可以一起工作
【UML】:
【主要角色】
目標(Target)角色:定義客戶端使用的與特定領域相關的接口,這也就是我們所期待得到的
源(Adaptee)角色:需要進行適配的接口
適配器(Adapter)角色:對Adaptee的接口與Target接口進行適配;適配器是本模式的核心,適配器把源接口轉換成目標接口,此角色為具體類
【適用性】
1、你想使用一個已經存在的類,而它的接口不符合你的需求
2、你想創建一個可以復用的類,該類可以與其他不相關的類或不可預見的類協同工作
3、你想使用一個已經存在的子類,但是不可能對每一個都進行子類化以匹配它們的接口。對象適配器可以適配它的父類接口(僅限於對象適配器)
//目標角色 interface Target { public function simpleMethod1(); public function simpleMethod2(); } //源角色 class Adaptee { public function simpleMethod1(){ echo 'Adapter simpleMethod1'."<br>"; } } //類適配器角色 class Adapter implements Target { private $adaptee; function __construct(Adaptee $adaptee) { $this->adaptee = $adaptee; } //委派調用Adaptee的sampleMethod1方法 public function simpleMethod1(){ echo $this->adaptee->simpleMethod1(); } public function simpleMethod2(){ echo 'Adapter simpleMethod2'."<br>"; } } //客戶端 class Client { public static function main() { $adaptee = new Adaptee(); $adapter = new Adapter($adaptee); $adapter->simpleMethod1(); $adapter->simpleMethod2(); } } Client::main();
【運行結果】
Adapter simpleMethod1
Adapter simpleMethod2

