程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP設計模式——適配器模式

PHP設計模式——適配器模式

編輯:關於PHP編程

PHP設計模式——適配器模式


 

適配器模式(有時候也稱包裝樣式或者包裝)將一個類的接口適配成用戶所期待的(適配器模式要解決的核心問題)。一個適配允許通常因為接口不兼容而不能在一起工作的類工作在一起,做法是將類自己的接口包裹在一個已存在的類中。

 

類圖:

data-cke-saved-src=https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011709125089.png

 

待適配(ForeignPlayer)角色:此角色的接口規則內部的接口規則不一致,但內部需要調用該角色的方法功能。

內部接口(IPlayer)角色:這是一個抽象角色,此角色給出內部期待的接口規則。

適配器(Adapter)角色:通過在內部包裝一個Adapter對象,把待適配接口轉換成目標接口,此角色為適配器模式的核心角色,也是適配器模式所解決問題的關鍵。

 

代碼:

 

;
    }

    function Defense()
    {
        echo 前鋒防御
;
    }
}

/**中鋒
 * Class Center
 */
class Center implements IPlayer
{

    function Attack()
    {
        echo 中鋒攻擊
;
    }

    function Defense()
    {
        echo 中鋒防御
;
    }
}

//--------------待適配對象-----------
/**姚明                 外籍運動員
 * Class Yaoming
 */
class Yaoming
{
    function 進攻()
    {
        echo 姚明進攻
;
    }

    function 防御()
    {
        echo 姚明防御
;
    }
}

//------------適配器--------------
/**適配器
 * Class Adapter
 */
class Adapter implements IPlayer
{
    private $_player;

    function __construct()
    {
        $this->_player=new Yaoming();
    }

    function Attack()
    {
        $this->_player->進攻();
    }

    function Defense()
    {
        $this->_player->防御();
    }
}

客戶端測試代碼:

 

 

header(Content-Type:text/html;charset=utf-8);
//------------------------原型模式測試代碼------------------
require_once ./Adapter/Adapter.php;

$player1=new Forward();

echo 前鋒上場:
;
$player1->Attack();
$player1->Defense();

echo 


; echo 姚明上場:
; $yaoming=new Adapter(); $yaoming->Attack(); $yaoming->Defense();

 

適用場景

1.接口中規定了所有要實現的方法

2.但要有一個實現此接口的具體類,只用到了其中的幾個方法,而其它的方法都是沒有用的。

注意事項

1.充當適配器角色的類就是實現已有接口的抽象類

2.為什麼要用抽象類:

此類是不要被實例化的。而只充當適配器的角色,也就為其子類提供了一個共同的接口,但其子類又可以將精力只集中在其感興趣的地方。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved