PHP設計模式 介面卡模式

2021-09-23 00:11:32 字數 2030 閱讀 6412

宣告:本系列部落格參考資料《大話設計模式》,作者程杰。

介面卡模式

(有時候也稱包裝樣式或者包裝)

將乙個類的介面適配成使用者所期待的(介面卡模式要解決的核心問題)。

乙個適配允許通常因為介面不相容而不能在一起工作的類工作在一起,做法是將類自己的介面包裹在乙個已存在的類中。

類圖:

待適配(

foreignplayer

)角色:

此角色的介面規則內部的介面規則不一致,但內部需要呼叫該角色的方法功能。

內部介面(

iplayer

)角色:

這是乙個抽象角色,此角色給出內部期待的介面規則。

介面卡(

adapter

)角色:

通過在內部包裝乙個

adapter

物件,把待適配介面轉換成目標介面,

此角色為介面卡模式的核心角色

,也是介面卡模式所解決問題的關鍵。

**:

<?php 

/** * created by phpstorm.

* user: jiang

* date: 2015/4/26

* time: 12:23

*///-------------抽象介面---------------

/**抽象運動員

* inte***ce iplayer

*/inte***ce iplayer

/**前鋒

* class forward

*/class forward implements iplayer

function defense()

}/**中鋒

* class center

*/class center implements iplayer

function defense()

}//--------------待適配物件-----------

/**姚明 外籍運動員

* class yaoming

*/class yaoming

function 防禦()

}//------------介面卡--------------

/**介面卡

* class adapter

*/class adapter implements iplayer

function attack()

function defense()

}

客戶端測試**:

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

.為什麼要用抽象類:

此類是不要被例項化的。而只充當介面卡的角色,也就為其子類提供了乙個共同的介面,但其

子類又可以將精力只集中在其感興趣的地方。

php物件導向設計模式

PHP設計模式(介面卡模式)

設計動機 假如我們又這樣軟體系統,我們希望它能夠和乙個新的庫搭配使用,但是這個庫所提供的介面與我們的軟體系統不相容,我們不想改變現有 就能解決這個問題,怎麼辦?這個時候我們就需要將這個新的庫介面轉換成我們所需要的介面,這就是介面卡模式設計動機。模式定義 介面卡模式就是將乙個類的介面,轉換成客戶期望的...

php設計模式介面卡模式

介面卡模式 有時候也稱包裝樣式或者包裝 將乙個類的介面適配成使用者所期待的。乙個適配允許通常因為介面不相容而不能在一起工作的類工作在一起。其實就是通過乙個轉換類,這個轉換類裡面有乙個方法,我們用這個轉換方法將原來的介面轉換成需要的介面 角色 如程式資料庫有關聯mysql mysqli pdo sql...

設計模式 介面卡模式 類介面卡 物件介面卡

乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...