PHP設計模式(七)適配器模式(Adapter For PHP)

適配器模式:將一個類的接口轉換成客戶但願的另一個接口,使得本來因爲接口不兼容而不能一塊兒工做的那些類能夠在一塊兒工做。php

圖片描述

先來看一個案例:

設置書的接口
// 書接口
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();
輸出結果:
電子書打開
電子書翻頁
相關文章
相關標籤/搜索