php中適配器模式的詳細解析(附代碼)

來源:互聯網
上載者:User
本篇文章給大家帶來的內容是關於php中適配器模式的詳細解析(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所協助。

適配器模式(PHP實現)

e.g.

//目標角色

1.介面擁有多個方法

//源角色

1.只擁有部分部分方法

//適配器角色

1.委派調用源角色已經存在的方法

2.適配 增加用戶端需要其他方法

//用戶端

1.設定靜態方法

2.執行個體化源角色

3.通過構造方法將注入

適配器模式(Adapter)模式:將一個類的介面,轉換成客戶期望的另一個類的介面。適配器讓原本介面不相容的類可以合作無間。

【適配器模式中主要角色】

目標(Target)角色:定義用戶端使用的與特定領域相關的介面,這也就是我們所期待得到的

源(Adaptee)角色:需要進行適配的介面

適配器(Adapter)角色:對Adaptee的介面與Target介面進行適配;適配器是本模式的核心,適配器把源介面轉換成目標介面,此角色為具體類。

其實也就是你家牆上有一個兩口的插座(Adaptee),但你買了一個電風扇(Target)需要三個口的,這個時候你就需要一個插排(Adapter)。

類適配器採用“多繼承”的實現方式,帶來了不良的高耦合,所以一般不推薦使用。對象適配器採用“對象組合”的方式,更符合松耦合精神。

類適配器使用的是繼承

e.g.:

/** * 目標角色 */interface Target {     /**     * 源類也有的方法1     */    public function sampleMethod1();     /**     * 源類沒有的方法2     */    public function sampleMethod2();} /** * 源角色 */class Adaptee {     /**     * 源類含有的方法     */    public function sampleMethod1() {        echo 'Adaptee sampleMethod1 <br />';    }} /** * 類適配器角色 */class Adapter extends Adaptee implements Target {     /**     * 源類中沒有sampleMethod2方法,在此補充     */    public function sampleMethod2() {        echo 'Adapter sampleMethod2 <br />';    } } class Client {     /**     * Main program.     */    public static function main() {        $adapter = new Adapter();        $adapter->sampleMethod1();        $adapter->sampleMethod2();     } }

對象適配器使用的是委派

e.g.:

/** * 目標角色 */interface Target {     /**     * 源類也有的方法1     */    public function sampleMethod1();     /**     * 源類沒有的方法2     */    public function sampleMethod2();} /** * 源角色 */class Adaptee {     /**     * 源類含有的方法     */    public function sampleMethod1() {        echo 'Adaptee sampleMethod1 <br />';    }} /** * 類適配器角色 */class Adapter implements Target {     private $_adaptee;     public function __construct(Adaptee $adaptee) {        $this->_adaptee = $adaptee;    }     /**     * 委派調用Adaptee的sampleMethod1方法     */    public function sampleMethod1() {        $this->_adaptee->sampleMethod1();    }     /**     * 源類中沒有sampleMethod2方法,在此補充     */    public function sampleMethod2() {        echo 'Adapter sampleMethod2 <br />';    } } class Client {     /**     * Main program.     */    public static function main() {        $adaptee = new Adaptee();        $adapter = new Adapter($adaptee);        $adapter->sampleMethod1();        $adapter->sampleMethod2();     } }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.