PHP設計模式之橋接模式

來源:互聯網
上載者:User
橋接模式屬於結構型模式,何為結構型模式,即結構型設計模式是從程式的結構上解決模組之間的耦合問題(低耦合)

概述:將抽象部分與它的實現部分分離,使他們都可以獨立的變化

橋接模式:

將抽象部分與它的實現部分分離,使他們都可以獨立的變

抽象與它的實現分離,即抽象類別和它的衍生類別用來實現自己的對象

橋接與適配器模式的關係(適配器模式後面講解)

橋接屬於彙總關係,兩者關聯 但不繼承

適配器屬於組合關係,適配者需要繼承源

彙總關係:A對象可以包含B對象 但B對象不是A對象的一部分

個人舉例:

1 大雁和雁群

2 手機軟體和手機品牌功能

組成關係:

鳥和翅膀的關係

namespace haibao\design\web\view\design;

use haibao\design\web\common\design\bridge\PhoneBrandNokia;

use haibao\design\web\common\design\bridge\PhoneBrandApple;

use haibao\design\web\common\design\bridge\PhoneGame;

use haibao\design\web\common\design\bridge\PhoneList;

class Bridge extends \haibao\design\web\view\Base{

protected function preRender(){

header("Content-type: text/html; charset=utf-8");

$nokia = new PhoneBrandNokia();

$nokia->setPhoneSoft(new PhoneGame('諾基亞'));

$nokia->run();

echo '
';

$nokia->setPhoneSoft(new PhoneList('諾基亞'));

$nokia->run();

echo '
';

$apple = new PhoneBrandApple();

$apple->setPhoneSoft(new PhoneGame('蘋果'));

$apple->run();

echo '
';

$apple->setPhoneSoft(new PhoneList('蘋果'));

$apple->run();

echo '
';

}

}

/**

* 手機品牌

*/

namespace haibao\design\web\common\design\bridge;

abstract class PhoneBrand{

public $phoneSoft;

public function setPhoneSoft($phoneSoft){

$this->phoneSoft = $phoneSoft;

}

public function run(){}

}

/**

* 蘋果

*/

namespace haibao\design\web\common\design\bridge;

class PhoneBrandApple extends PhoneBrand{

public function run(){

$this->phoneSoft->run();

}

}

/**

* 諾基亞

*/

namespace haibao\design\web\common\design\bridge;

class PhoneBrandNokia extends PhoneBrand{

public function run(){

$this->phoneSoft->run();

}

}

/**

* 手機遊戲

*/

namespace haibao\design\web\common\design\bridge;

class PhoneGame extends PhoneSoft{

public $name;

public function __construct($name){

$this->name = $name;

}

public function run(){

echo '運行'.$this->name.'平台手機遊戲';

}

}

/**

* 手機通訊錄

*/

namespace haibao\design\web\common\design\bridge;

class PhoneList extends PhoneSoft{

public $name;

public function __construct($name){

$this->name = $name;

}

public function run(){

echo '運行'.$this->name.'手機通訊錄';

}

}

/**

* 手機軟體

*/

namespace haibao\design\web\common\design\bridge;

abstract class PhoneSoft{

public function run(){}

}

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.