PHP設計模式—適配器模式

 

定義:

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

 

結構:

  • Target:目標接口,定義與客戶端交互相關的接口,目標能夠是具體的或抽象的類,也能夠是接口。
  • Adaptee:源接口,須要適配的類。
  • Adapter:適配器,對 Adaptee 的接口與 Target 接口進行適配,經過在內部包裝一個 Adaptee對象,把源接口轉換成目標接口。
  • Client:客戶端代碼。

 

代碼實例:

類適配器:this

/**
 * Target.php(目標接口)
 * Interface Target
 */
interface Target
{
    public function method1();

    public function method2();
}


/**
 * Adaptee.php(源接口)
 * Class Adaptee
 */
class Adaptee
{
    public function method1()
    {
        echo "Adaptee Method1<br/>\n";
    }
}


/**
 * Adapter.php(適配器)
 * Class Adapter
 */
class Adapter extends Adaptee implements Target
{
    public function method2()
    {
        // TODO: Implement method2() method.
        echo "Adapter Method2<br/>\n";
    }
}


// 客戶端調用
$adapter = new Adapter();
$adapter->method1();
$adapter->method2();

 

對象適配器:spa

/**
 * Target.php(目標接口)
 * Interface Target
 */
interface Target
{
    public function method1();

    public function method2();
}


/**
 * Adaptee.php(源接口)
 * Class Adaptee
 */
class Adaptee
{
    public function method1()
    {
        echo "Adaptee Method1<br/>\n";
    }
}


/**
 * Adapter.php(適配器)
 * Class Adapter
 */
class Adapter implements Target
{
    private $adaptee;

    public function __construct(Adaptee $adaptee)
    {
        $this->adaptee = $adaptee;
    }


    public function method1()
    {
        // TODO: Implement method1() method.
        $this->adaptee->method1();
    }


    public function method2()
    {
        // TODO: Implement method2() method.
        echo "Adapter Method2<br/>\n";
    }
}


// 客戶端調用
$adapter = new Adapter(new Adaptee());
$adapter->method1();
$adapter->method2();
相關文章
相關標籤/搜索