適配器模式:將一個類的介面轉換成客戶希望的另外一個介面,使得原本由於介面不相容而不能一起工作的那些類可以在一起工作。 如下圖(借圖): // 設置書的介面 客戶端測試: 輸出結果: 這時候,你想創建一個可以復用的類,該類可以與其他不相關的類或不可預見的類(即那些介面可能不一定相容的類)協同工作。 如 ...
適配器模式:將一個類的介面轉換成客戶希望的另外一個介面,使得原本由於介面不相容而不能一起工作的那些類可以在一起工作。
如下圖(借圖):
// 設置書的介面
// 書介面 interface BookInterface { // 翻頁方法 public function turnPage(); // 打開書方法 public function open(); }
// 紙質書實現類 class Book implements BookInterface { public function turnPage() { echo "紙質書翻頁". "<br>"; } public function open() { echo "紙質書打開". "<br>"; } }
客戶端測試:
// 客戶端測試 $book = new Book(); $book->open(); $book->turnPage();
輸出結果:
紙質書打開
紙質書翻頁
這時候,你想創建一個可以復用的類,該類可以與其他不相關的類或不可預見的類(即那些介面可能不一定相容的類)協同工作。
如下:
// 待適配對象 class Kindle { public function turnPage() { echo "電子書翻頁". "<br>"; } public function open() { echo "電子書打開". "<br>"; } }
// 適配器
class KindleAdapter implements BookInterface { protected $_kindle; public function __construct($obj) { $this->_kindle = $obj; } public function turnPage() { $this->_kindle->turnPage(); } public function open() { $this->_kindle->open(); } }
// 客戶端測試
$kindle = new KindleAdapter(new Kindle()); $kindle->open(); $kindle->turnPage();
// 輸出結果
電子書打開
電子書翻頁
後記:
本文僅為個人學習筆記整理,如有紕漏之處,歡迎指正!