設(shè)計模式---橋接模式

標簽(空格分隔): 設(shè)計模式


背景需求:
  java中沒有多繼承機制偏螺,當一個類存在兩個維度的變化预明,并且這兩個維度都需要擴展状知。當我們擴展一個維度的時候,會增加很多的子類堡纬,這樣的擴展成本是非常高的聂受。
  例如:我們有電腦這個類,同時在電腦這個類下面烤镐,我們有分成臺式機蛋济,筆記本平板電腦炮叶,同時我們又在各個子類下面又分成各大品牌的電腦碗旅,如在臺式機分類中增加聯(lián)想臺式機神州臺式機镜悉,華碩臺式機祟辟,同時在筆記本分類中增加聯(lián)想筆記本神州筆記本积瞒,華碩筆記本川尖,類似于這樣,一個類有兩個維度控制茫孔,一個是什么形式的電腦叮喳,另一個是什么品牌的電腦,這樣缰贝,如果們增加了一個維度的成員馍悟,則要增加出很多的子類,這對我們的擴展和維護的成本是非常大的剩晴。
  為了解決這樣的問題锣咒,我們引入橋接模式侵状,
  
  首先我們定義一個維度接口(品牌接口),

public interface Brand {
    void sall();
}

定義各種品牌實現(xiàn)類:


class LenovoBrand implements Brand{

    @Override
    public void sall() {
        System.out.print("賣聯(lián)想品牌的");
    }
}


class DellBrand implements Brand{
    
    @Override
    public void sall() {
        System.out.print("賣戴爾品牌的");
    }
}

定義第二位維度實現(xiàn)類毅整,這個實現(xiàn)類持有另一個維度的對象趣兄,同時這個實現(xiàn)類提供的方法調(diào)用對另一維度變量方法適當應用。

public class Computer {

    private Brand mBrand;

    public Computer(Brand mBrand) {
        this.mBrand = mBrand;
    }
    
    public void sall(){
        mBrand.sall();
        
    }
}

定義第二維度的實現(xiàn)類

public class Laptop extends Computer{

    public Laptop(Brand mBrand) {
        super(mBrand);
    }

    @Override
    public void sall() {
        super.sall();
        System.out.println("筆記本");
    }
}

public class Pad extends Computer{

    public Pad(Brand mBrand) {
        super(mBrand);
    }
    
    public void sall(){
        super.sall();
        System.out.println("賣pad的");
        
    }

}

測試代碼:

public class Client {

    public static void main(String[] args) {
        
        Computer computer1 = new Laptop(new LevonBrand());
        computer1.sall();
        
        Computer computer2 = new Pad(new DellBrand());
        computer2.sall();
    }
}

測試結(jié)果:

賣聯(lián)想品牌的筆記本
賣戴爾品牌的pad

使用這樣的方式悼嫉,當我們增加一個維度的成員是艇潭,我們可以很方便的實現(xiàn)對想要成員的擴展,例如當我們需要增加一個品牌的時候戏蔑,我們不需要將這個品牌的筆記本蹋凝,臺式機,pad形式的電腦的子類都有新建出來总棵,但是在我們xueyao

橋接模式總結(jié):
可以取代多層繼承方案鳍寂,多層繼承違背了單一職責原則,復用性比較差情龄,類的個數(shù)也非常多迄汛,橋接模式可以極大的減少子類的個數(shù),從而降低管理和維護的成本刃唤。
橋接模式極大的提高了系統(tǒng)的可擴展性隔心,在兩個變化的維度中擴展任意一個維度白群,都不需要修改原有的系統(tǒng)尚胞,符合開閉原則。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末帜慢,一起剝皮案震驚了整個濱河市笼裳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌粱玲,老刑警劉巖躬柬,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異抽减,居然都是意外死亡允青,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門卵沉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颠锉,“玉大人,你說我怎么就攤上這事史汗∏砺樱” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵停撞,是天一觀的道長瓷蛙。 經(jīng)常有香客問我悼瓮,道長,這世上最難降的妖魔是什么艰猬? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任横堡,我火速辦了婚禮,結(jié)果婚禮上冠桃,老公的妹妹穿的比我還像新娘翅萤。我一直安慰自己,他們只是感情好腊满,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布套么。 她就那樣靜靜地躺著,像睡著了一般碳蛋。 火紅的嫁衣襯著肌膚如雪胚泌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天肃弟,我揣著相機與錄音玷室,去河邊找鬼。 笑死笤受,一個胖子當著我的面吹牛穷缤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播箩兽,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼津肛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了汗贫?” 一聲冷哼從身側(cè)響起身坐,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎落包,沒想到半個月后部蛇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡咐蝇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年涯鲁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片有序。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡抹腿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出笔呀,到底是詐尸還是另有隱情幢踏,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布许师,位于F島的核電站房蝉,受9級特大地震影響僚匆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搭幻,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一咧擂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧檀蹋,春花似錦松申、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至桌肴,卻和暖如春皇筛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坠七。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工水醋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人彪置。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓拄踪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拳魁。 傳聞我的和親對象是個殘疾皇子惶桐,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

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

  • 由于實際的需要,某個類具有兩個或兩個以上的維度變化的猛,如果利用繼承將每種可能的變化情況都定義成一個類耀盗,一是會導致類膨...
    時待吾閱讀 644評論 0 0
  • 原文地址:LoveDev 橋接模式是種很實用的結(jié)構(gòu)型設(shè)計模式想虎,又稱為柄體模式或接口模式卦尊,該模式可以將兩個維度的變化...
    KevinLive閱讀 225評論 0 0
  • 橋接模式 橋接(Bridge)是用于把抽象化與實現(xiàn)化解耦,使得二者可以獨立變化舌厨。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式岂却,...
    ZackDt閱讀 724評論 0 0
  • 5月7號下午出發(fā),高鐵到泰安裙椭,錯過了第一次認知實習躏哩,錯過一個小時的參觀,可能會讓我上個大五揉燃。但是想想那個晚上扫尺,和心...
    SpencerH閱讀 320評論 0 0
  • 圓形方孔銅錢在我國使用時間已有兩千多年了,方孔圓錢的前身是戰(zhàn)國時期的圜錢炊汤。 在制作這種方孔圓錢過程中正驻,古人把一百來...
    芃芃其麥遇青禾閱讀 666評論 0 0