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

  • 概述
  • UML類圖
  • 代碼栗子
  • 總結(jié)
  1. 概述

    橋接模式是將抽象部分與它的實(shí)現(xiàn)部分分離贾惦,使它們都可以獨(dú)立地變化癣诱。
    
    • 來(lái)個(gè)栗子
      小明買了一輛法拉利盹沈,但是發(fā)現(xiàn)法拉利村里的人不認(rèn)識(shí)龄章,沒(méi)法兒***,因此小明特地又去買了一輛寶馬乞封,這下就可以開(kāi)出去不用解釋這是啥車了做裙,買回來(lái)后就開(kāi)始要為愛(ài)車安裝各種裝飾品,它的兩輛車可以任意搭配飾品肃晚,結(jié)論來(lái)了<抽象與實(shí)現(xiàn)分離锚贱、實(shí)現(xiàn)部分獨(dú)立地變化>
  1. UML

    • 優(yōu)點(diǎn):實(shí)現(xiàn)系統(tǒng)可能有多角度分類,每一種分類都有可能變化关串,分離并獨(dú)立變化拧廊,減少它們之間的耦合
  2. 栗子

    /*汽車基類*/
    public abstract class Car {
        /**
         * 安裝導(dǎo)航儀
         * @param navigator
         */
        public abstract void installNavigator(INavigator navigator);
        
        /**
         * 開(kāi)啟導(dǎo)航
         * 開(kāi)啟導(dǎo)航是調(diào)用導(dǎo)航接口實(shí)現(xiàn)類的方法
         */
        public abstract void open();
    }
    
    /*寶馬牌汽車*/
    public class BMWCar extends Car {
        /**導(dǎo)航儀*/
        INavigator navigator = null;
        
        @Override
        public void installNavigator(INavigator n) {
            System.out.println("寶馬成功安裝了:"+n.toString());
            navigator = n;
        }
        @Override
        public void open() {
            navigator.work();
        }
    }
    /*法拉利牌汽車*/
    public class FerrariCar extends Car {
        /**導(dǎo)航儀*/
        INavigator navigator = null;
       
        @Override
        public void installNavigator(INavigator n) {
            System.out.println("法拉利成功安裝了:"+n.toString());
            navigator = n;
        }
        
        
        @Override
        public void open() {
            navigator.work();
        }
        
    }
    
    /*導(dǎo)航儀接口*/
    public interface INavigator { 
        /**
         *  導(dǎo)航實(shí)現(xiàn)
         */
     void work();
    }
    
    /*高德導(dǎo)航儀*/
    public class AmapNavigator implements INavigator {
     
     @Override
     public void work() {
         System.out.println("我是高德導(dǎo)航儀!");
     }
        @Override
        public String toString() {
            return "【高德導(dǎo)航儀】";
        }
    }
    /*北斗導(dǎo)航儀*/
    public class BdNavigator implements INavigator {
        @Override
        public String toString() {
            return "【北斗牌導(dǎo)航儀】";
        }
        
        @Override
        public void work() {
            System.out.println("我是北斗導(dǎo)航儀晋修!");
        }
    }
    
    • 測(cè)試

      public class Main {
      
         public static void main(String[] args) {
              test1() ;
              test1_1() ;
          
          }
          public static void test1(){
              INavigator bdNavigator = new BdNavigator();
              //法拉利安裝北斗導(dǎo)航
              Car ferrariCar = new FerrariCar() ;
              ferrariCar.installNavigator(bdNavigator);
              ferrariCar.open();
          }
          public static void test1_1(){
              INavigator amapNavigator = new AmapNavigator();
              //寶馬安裝了高德導(dǎo)航儀
              Car ghostCar = new BMWCar();
              ghostCar.installNavigator(amapNavigator);
              ghostCar.open();
          }
      }
      
  1. 總結(jié)

    1. 橋接方式比繼承的方式要更靈活吧碾,它是汽車與配件可以獨(dú)立各自的發(fā)展
    2. 當(dāng)繼承造成大量類增加且不能滿足開(kāi)閉原則時(shí),可以考慮使用橋接模式
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末墓卦,一起剝皮案震驚了整個(gè)濱河市倦春,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖睁本,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件山叮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡添履,警方通過(guò)查閱死者的電腦和手機(jī)屁倔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)暮胧,“玉大人锐借,你說(shuō)我怎么就攤上這事⊥裕” “怎么了钞翔?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)席舍。 經(jīng)常有香客問(wèn)我布轿,道長(zhǎng),這世上最難降的妖魔是什么来颤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任汰扭,我火速辦了婚禮,結(jié)果婚禮上福铅,老公的妹妹穿的比我還像新娘萝毛。我一直安慰自己,他們只是感情好滑黔,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布笆包。 她就那樣靜靜地躺著,像睡著了一般略荡。 火紅的嫁衣襯著肌膚如雪庵佣。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天汛兜,我揣著相機(jī)與錄音巴粪,去河邊找鬼。 笑死序无,一個(gè)胖子當(dāng)著我的面吹牛验毡,可吹牛的內(nèi)容都是我干的衡创。 我是一名探鬼主播帝嗡,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼璃氢!你這毒婦竟也來(lái)了哟玷?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巢寡,沒(méi)想到半個(gè)月后喉脖,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抑月,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年树叽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谦絮。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡题诵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出层皱,到底是詐尸還是另有隱情性锭,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布叫胖,位于F島的核電站草冈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瓮增。R本人自食惡果不足惜怎棱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绷跑。 院中可真熱鬧蹄殃,春花似錦、人聲如沸你踩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)带膜。三九已至吩谦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間膝藕,已是汗流浹背式廷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芭挽,地道東北人滑废。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像袜爪,于是被迫代替她去往敵國(guó)和親蠕趁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • class Program { static void Main(string[] args) { ...
    穿AJ的火烈鳥(niǎo)閱讀 464評(píng)論 2 1
  • 分離抽象和實(shí)現(xiàn): 模擬場(chǎng)景—— 中杯辛馆,大杯俺陋,咖啡加奶,咖啡不加奶。其中腊状,中杯和大杯為抽象诱咏,加奶和不加奶為行為: c...
    指間_璇律閱讀 418評(píng)論 0 1
  • 一、什么是橋接模式 橋接模式缴挖,將抽象部分與實(shí)現(xiàn)部分分離袋狞,使它們都可以獨(dú)立地變化。 二映屋、UML 圖 三硕并、代碼示例 1...
    守住陽(yáng)光閱讀 945評(píng)論 0 0
  • 橋接模式:將抽象的部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化秧荆。 什么叫抽像與實(shí)現(xiàn)分離倔毙,并不是說(shuō)讓抽象類與其派生...
    超級(jí)大雞腿閱讀 339評(píng)論 0 0
  • 轉(zhuǎn):http://www.runoob.com/design-pattern/bridge-pattern.htm...
    right_33cb閱讀 115評(píng)論 0 0