首頁 後端開發 php教程 PHP设计模式之桥接模式

PHP设计模式之桥接模式

Jun 20, 2016 pm 12:28 PM

桥接模式属于结构型模式,何为结构型模式,即结构型设计模式是从程序的结构上解决模块之间的耦合问题(低耦合)

概述:将抽象部分与它的实现部分分离,使他们都可以独立的变化

桥接模式:

将抽象部分与它的实现部分分离,使他们都可以独立的变

抽象与它的实现分离,即抽象类和它的派生类用来实现自己的对象

桥接与适配器模式的关系(适配器模式后面讲解)

桥接属于聚合关系,两者关联 但不继承

适配器属于组合关系,适配者需要继承源

聚合关系: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(){}

}

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

11個最佳PHP URL縮短腳本(免費和高級) 11個最佳PHP URL縮短腳本(免費和高級) Mar 03, 2025 am 10:49 AM

11個最佳PHP URL縮短腳本(免費和高級)

Instagram API簡介 Instagram API簡介 Mar 02, 2025 am 09:32 AM

Instagram API簡介

在Laravel中使用Flash會話數據 在Laravel中使用Flash會話數據 Mar 12, 2025 pm 05:08 PM

在Laravel中使用Flash會話數據

構建具有Laravel後端的React應用程序:第2部分,React 構建具有Laravel後端的React應用程序:第2部分,React Mar 04, 2025 am 09:33 AM

構建具有Laravel後端的React應用程序:第2部分,React

簡化的HTTP響應在Laravel測試中模擬了 簡化的HTTP響應在Laravel測試中模擬了 Mar 12, 2025 pm 05:09 PM

簡化的HTTP響應在Laravel測試中模擬了

php中的捲曲:如何在REST API中使用PHP捲曲擴展 php中的捲曲:如何在REST API中使用PHP捲曲擴展 Mar 14, 2025 am 11:42 AM

php中的捲曲:如何在REST API中使用PHP捲曲擴展

在Codecanyon上的12個最佳PHP聊天腳本 在Codecanyon上的12個最佳PHP聊天腳本 Mar 13, 2025 pm 12:08 PM

在Codecanyon上的12個最佳PHP聊天腳本

宣布 2025 年 PHP 形勢調查 宣布 2025 年 PHP 形勢調查 Mar 03, 2025 pm 04:20 PM

宣布 2025 年 PHP 形勢調查

See all articles