PHP設(shè)計(jì)模式——橋接模式

橋接模式:在軟件系統(tǒng)中宏多,某些類型由于自身的邏輯儿惫,它具有兩個(gè)或多個(gè)維度的變化,那么如何應(yīng)對(duì)這種“多維度的變化”伸但?這就要使用橋接模式——將抽象部分與它的實(shí)現(xiàn)部分分離肾请,使他們可以獨(dú)立地變化。

UML類圖:


圖片.png

角色介紹:

抽象化(AbstractRoad)角色:抽象化給出的定義更胖,并保存一個(gè)對(duì)實(shí)現(xiàn)化對(duì)象的引用铛铁。

修正抽象化(SpeedWay)角色:擴(kuò)展抽象化角色,改變和修正父類對(duì)抽象化的定義却妨。

實(shí)現(xiàn)化(AbstractCar)角色:這個(gè)角色給出實(shí)現(xiàn)化角色的接口饵逐,但不給出具體的實(shí)現(xiàn)。必須指出的是管呵,這個(gè)接口不一定和抽象化角色的接口定義相同梳毙,實(shí)際上,這兩個(gè)接口可以非常不一樣捐下。

具體實(shí)現(xiàn)化(Bus)角色:這個(gè)角色給出實(shí)現(xiàn)化角色接口的具體實(shí)現(xiàn)账锹。

代碼體現(xiàn):

<?php
/**
 * Created by PhpStorm.
 * User: Jiang
 * Date: 2015/4/26
 * Time: 16:39
 */
 
/**抽象化角色            抽象路
 * Class AbstractRoad
 */
abstract class AbstractRoad
{
    public $icar;
 
    abstract function Run();
}
 
/**具體的             高速公路
 * Class speedRoad
 */
class SpeedRoad extends AbstractRoad
{
    function Run()
    {
        $this->icar->Run();
        echo ":在高速公路上。";
    }
}
 
/**鄉(xiāng)村街道
 * Class Street
 */
class Street extends AbstractRoad
{
    function Run()
    {
        $this->icar->Run();
        echo ":在鄉(xiāng)村街道上坷襟。";
    }
}
 
/**抽象汽車接口
 * Interface ICar
 */
interface ICar
{
    function Run();
}
 
/**吉普車
 * Class Jeep
 */
class Jeep implements ICar
{
    function Run()
    {
        echo "吉普車跑";
    }
}
 
/**小汽車
 * Class Car
 */
class Car implements ICar
{
 
    function Run()
    {
        echo "小汽車跑";
    }
}

測(cè)試代碼:

/------------------------橋接模式測(cè)試代碼------------------
require_once "./Bridge/Bridge.php";
$speedRoad=new SpeedRoad();
$speedRoad->icar=new Car();
$speedRoad->Run();
 
echo "<hr/>";
 
$street=new Street();
$street->icar=new Jeep();
$street->Run();

適用場(chǎng)景:

1.如果一個(gè)系統(tǒng)需要在構(gòu)件的抽象化角色和具體化角色之間增加更多的靈活性奸柬,避免在兩個(gè)層次之間建立靜態(tài)的聯(lián)系。

2.設(shè)計(jì)要求實(shí)現(xiàn)化角色的任何改變不應(yīng)當(dāng)影響客戶端婴程,或者說實(shí)現(xiàn)化角色的改變對(duì)客戶端是完全透明的廓奕。

3.一個(gè)構(gòu)件有多于一個(gè)的抽象化角色和實(shí)現(xiàn)化角色,系統(tǒng)需要它們之間進(jìn)行動(dòng)態(tài)耦合档叔。

4.雖然在系統(tǒng)中使用繼承是沒有問題的桌粉,但是由于抽象化角色和具體化角色需要獨(dú)立變化,設(shè)計(jì)要求需要獨(dú)立管理這兩者衙四。


參考:《大話設(shè)計(jì)模式》铃肯,作者程杰
https://blog.csdn.net/jhq0113/article/details/45441793

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市传蹈,隨后出現(xiàn)的幾起案子押逼,更是在濱河造成了極大的恐慌,老刑警劉巖惦界,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挑格,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡沾歪,警方通過查閱死者的電腦和手機(jī)漂彤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灾搏,“玉大人挫望,你說我怎么就攤上這事∪纺鳎” “怎么了士骤?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蕾域。 經(jīng)常有香客問我拷肌,道長(zhǎng),這世上最難降的妖魔是什么旨巷? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任巨缘,我火速辦了婚禮,結(jié)果婚禮上采呐,老公的妹妹穿的比我還像新娘若锁。我一直安慰自己,他們只是感情好斧吐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布又固。 她就那樣靜靜地躺著仲器,像睡著了一般。 火紅的嫁衣襯著肌膚如雪仰冠。 梳的紋絲不亂的頭發(fā)上乏冀,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音洋只,去河邊找鬼辆沦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛识虚,可吹牛的內(nèi)容都是我干的肢扯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼担锤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蔚晨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起妻献,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蛛株,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后育拨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谨履,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年熬丧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了笋粟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡析蝴,死狀恐怖害捕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闷畸,我是刑警寧澤尝盼,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站佑菩,受9級(jí)特大地震影響盾沫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜殿漠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一赴精、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绞幌,春花似錦蕾哟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽帘营。三九已至,卻和暖如春琼富,著一層夾襖步出監(jiān)牢的瞬間仪吧,已是汗流浹背庄新。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工鞠眉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人择诈。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓械蹋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親羞芍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子哗戈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 設(shè)計(jì)模式匯總 一、基礎(chǔ)知識(shí) 1. 設(shè)計(jì)模式概述 定義:設(shè)計(jì)模式(Design Pattern)是一套被反復(fù)使用荷科、多...
    MinoyJet閱讀 3,947評(píng)論 1 15
  • 點(diǎn)擊進(jìn)入我的博客 3.1 適配器模式 適配器模式把一個(gè)類的接口變換成客戶端所期待的另一種接口唯咬,使得原本因接口不匹配...
    盧卡斯嗶嗶嗶閱讀 687評(píng)論 0 1
  • 一、應(yīng)用場(chǎng)景 設(shè)想如果要繪制矩形畏浆、圓形胆胰、橢圓、正方形刻获,我們至少需要4個(gè)形狀類蜀涨,但是如果繪制的圖形需要具有不同的顏色...
    QuantRuu閱讀 784評(píng)論 0 51
  • 1.初識(shí)橋接模式 將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化蝎毡。 Abstraction:抽象部分的接口厚柳。...
    王偵閱讀 917評(píng)論 0 7
  • 本文參考:http://www.oschina.net/question/1436074_140456 http:...
    端木軒閱讀 3,611評(píng)論 0 5