亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

設計模式——橋接模式(BridgeMode)

2019-11-10 20:46:23
字體:
來源:轉載
供稿:網友

要想正確理解設計模式,首先必須明確它是為了解決什么問題而提出來的。

設計模式學習筆記

——Shulin

轉載請注明出處:http://blog.csdn.net/zhshulin

橋接模式的定義:"將抽象部分與實現部分分離,使它們都可以獨立的變化"。

橋接模式是所有面向對象模式的基礎,通過對橋接模式的學習來理解設計模式的思想。理由如下:

1、它教導如何思考抽象,這是面向對象設計模式的關鍵概念。

2、它實現了基本的OOD原則。

3、它容易理解。

4、如果正確理解該模式,學習其他模式會很容易。

假設以下場景:

我們房間里有些電器(電燈,風扇等)。這些設備按照某些方式布局,并由開關控制。任何時候你都能替換或排查一個電器而不用碰到其他東西。例如,你可以換一個電燈而不需要換開關。同樣,你可以換一個開關或排查它而不需要碰到或替換相應的電燈或風扇;甚至你可以用把電燈連接到風扇的開關上,把風扇連到電燈的開關上,而不需要碰到開關。

當不同東西聯系在一起時,它們應該按照一定方式聯系:修改或替換一個系統時不會影響到另一個,或者說即便有,也應該最小化。這能夠讓你的系統易于管理,且成本低。

把電燈/風扇和開關聯系到一起的是電線和電器布局。我們可以它們看做不同系統間相互聯系的橋梁。其基本的思想是,一個事物不能和另一外一個事物直接聯系。它們應當通過某些橋梁或接口聯系在一起。用軟件術語來說,這叫“松耦合”。

例子中我們有開關,可能有幾種開關,如普通的開關,漂亮的開關,但通常來說它們還是開關,并且每種開關都能夠打開和關閉。

所以下面我們會有一個開關的父類Switch:

[java] view plain copy PRint?在CODE上查看代碼片public class Switch {                  public void On() {  }               public void Off(){  }     }   

接下來我們會有其他的具體的開關來繼承這個父類,他們都各自有自己的特征和行為,當然最基本的就是開、關,如:

[java] view%20plain copy print?public class FancySwitch extends Switch {      public void on(){          System.out.println("打開開關!?。?!");      }      public void off(){          System.out.println("關閉開關?。。?!");      }  }  [java] view%20plain copy print?public class NormalSwitch extends Switch {      public void on(){          System.out.println("打開開關?。。?!");      }      public void off(){          System.out.println("關閉開關?。。?!");      }        }  

對于電燈和電扇等具體的電器,根據OODP的開放閉合原則,我們知道只要可能,就應該嘗試抽象

跟開關不一樣,風扇和電燈等是兩種不同的事物。對于開關,我們能夠使用一個開關基類Switch,但風扇和電燈是兩個不同的事物,相比定義一個基類,接口可能更合適。一般來說,他們都是電器。所以我們可以定義一個接口,如IElectricalEqupublic interface IElectricalEquipment {      public void powerOn();  //每個電器都可以打開      public void powerOff(); //每個電器都可以關閉  }  

現在我們需要一座橋梁。在現實中,電線是橋梁。在我們對象設計中,開關知道如何打開和關閉電器,電器以某種方式聯系到開關。這里我們沒有電線,讓電器連接到開關的唯一方式是封裝。但開關不能直接知道風扇或電燈。開關應當知道一個電器IElectricalEquipment能夠打開或關閉。這意味著,Switch應該有一個IElectricalEquipment實例。

對風扇或電燈的封裝的實例是一個橋梁。所以讓我們修改Switch類以便封裝一個電器:

[java] view%20plain copy print?public class Switch {            public IElectricalEquipment iEquip;              public IElectricalEquipment getiEquip() {          return iEquip;      }      public void setiEquip(IElectricalEquipment iEquip) {          this.iEquip = iEquip;      }      public void On() {                //開關打開                }              public void Off() {                //開關關閉            }       }   

下面定義真實的電器:風扇和電燈,他們都實現了IElectricalEquipment接口。

電扇:

[java] view%20plain copy print?public class Fan implements IElectricalEquipment {      @Override      public void powerOn() {          System.out.println("打開電扇!");      }       @Override      public void powerOff() {          System.out.println("關閉電風扇!");      }  }  電燈:

[java] view%20plain copy print?public class Light implements IElectricalEquipment {            @Override      public void powerOn() {          System.out.println("打開電燈!");      }        @Override      public void powerOff() {          System.out.println("電燈關閉!");      }    }  

現在開關必須可以控制電器:

[java] view%20plain copy print?派生到我的代碼片public class BridgeModeDemo {        public static void main(String[] args) {          Switch fancySwitch = new FancySwitch(); //實例化漂亮的開關          Switch normalSwitch = new NormalSwitch();   //實例化普通開關          IElectricalEquipment fan = new Fan();   //實例化電風扇          IElectricalEquipment light = new Light();   //實例化電燈          normalSwitch.setiEquip(light);          fancySwitch.setiEquip(fan);          fancySwitch.getiEquip().powerOn();  //此時具體的開關和電扇連接起來了          normalSwitch.getiEquip().powerOn(); //打開電燈      }    }  
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美裸体xxxx极品少妇软件| 国产精品久久久久久久久久免费| 日韩视频亚洲视频| 国产欧美久久一区二区| 在线观看视频99| 国产精品丝袜一区二区三区| 欧美性猛交xxxxx水多| 久久资源免费视频| 亚洲精品狠狠操| 国产剧情久久久久久| 欧美精品video| 欧美高清无遮挡| 国产亚洲人成网站在线观看| 国产精品欧美日韩一区二区| 久久久久在线观看| 欧美xxxx18性欧美| 亚洲欧洲视频在线| 国产精品视频资源| 中文精品99久久国产香蕉| 在线精品国产成人综合| 日韩一区视频在线| 日本成人激情视频| 91av视频在线免费观看| 久久久最新网址| 97香蕉久久超级碰碰高清版| 日韩精品在线观看一区| 亚洲一区二区中文字幕| 伊人久久大香线蕉av一区二区| 亚洲视频在线观看免费| 在线视频欧美日韩| 国产精品成人国产乱一区| 国产精品久久久久一区二区| 精品色蜜蜜精品视频在线观看| 欧美激情欧美激情在线五月| 国产精品视频不卡| 国产视频精品在线| 久久香蕉国产线看观看av| 亚洲视频视频在线| 国产精品久久久久不卡| 亚洲精品视频中文字幕| 日韩亚洲欧美中文高清在线| 97色在线观看免费视频| 亚洲图中文字幕| 国产国语刺激对白av不卡| 日韩在线一区二区三区免费视频| 欧美性猛交xxxx免费看| 日韩美女在线播放| 日韩电影第一页| 黑人精品xxx一区| 国产精品视频公开费视频| 亚洲精品suv精品一区二区| 日韩国产一区三区| 亚洲成av人影院在线观看| 欧美激情视频网站| 亚洲高清久久久久久| 国产日韩欧美夫妻视频在线观看| 精品视频在线播放色网色视频| 成人福利在线视频| 日韩欧美亚洲成人| 7m精品福利视频导航| 精品国产成人av| 日韩国产一区三区| 日韩av网站电影| 亚洲人高潮女人毛茸茸| 欧美大片在线免费观看| 亚洲精品中文字幕有码专区| 国产一区二区丝袜| 国产成人精品综合久久久| 国产亚洲aⅴaaaaaa毛片| 欧美电影免费观看| 久久精视频免费在线久久完整在线看| 亚洲视频axxx| 亚洲欧洲国产精品| 欧洲永久精品大片ww免费漫画| 最好看的2019的中文字幕视频| 欧美高清一级大片| 欧美精品激情在线观看| 欧美一区二区三区四区在线| 久久五月情影视| 色噜噜久久综合伊人一本| 国产91精品久| 国产香蕉精品视频一区二区三区| 日韩欧美国产激情| 国产aⅴ夜夜欢一区二区三区| 亚洲永久免费观看| 欧美日韩在线第一页| 91精品国产自产在线老师啪| 国产精品免费久久久久久| 国产精品久久久久久久美男| 日韩欧美中文在线| 日韩精品久久久久| 色综合久久88色综合天天看泰| 欧美日韩亚洲一区二区三区| 精品久久久一区二区| 欧美美最猛性xxxxxx| 91po在线观看91精品国产性色| 成人xvideos免费视频| 久久久亚洲影院| 91在线色戒在线| 国产精品久久久久久久app| 欧美激情视频一区二区三区不卡| 亚洲a∨日韩av高清在线观看| www.国产精品一二区| 亚洲人成在线一二| 亚洲一区二区久久久| 国产精品羞羞答答| 日本成人黄色片| 欧美亚洲国产视频小说| 亚洲欧美日本伦理| 欧美激情精品久久久久久变态| 亚洲国产成人精品久久久国产成人一区| 欧美日韩日本国产| 激情懂色av一区av二区av| 欧美精品免费在线观看| 中文字幕日韩在线观看| 91精品国产高清久久久久久久久| 久久久久久久电影一区| 国产精品v片在线观看不卡| 97色在线播放视频| 精品国产一区二区三区久久| 国产999精品视频| 亚洲欧美国产高清va在线播| 国产极品精品在线观看| 亚洲综合中文字幕在线| 久久久久久久久久久免费精品| 久久777国产线看观看精品| 粉嫩av一区二区三区免费野| 亚洲免费福利视频| 国产精品狠色婷| 中国日韩欧美久久久久久久久| 国产91精品青草社区| 久久久久久久网站| 奇门遁甲1982国语版免费观看高清| 欧美福利视频网站| 日韩欧美亚洲一二三区| 中文日韩在线视频| 欧美最顶级的aⅴ艳星| 欧美一级在线亚洲天堂| 欧美激情精品久久久久久免费印度| 91久久久久久国产精品| 韩剧1988免费观看全集| 成人av在线天堂| 亚洲jizzjizz日本少妇| 欧美成人亚洲成人| 日韩久久精品电影| 在线观看视频99| 久久精品国产精品| 欧美性生交xxxxx久久久| 欧美—级a级欧美特级ar全黄| 欧美一级片一区| 亚洲久久久久久久久久| 久久视频在线看| 97视频在线观看免费高清完整版在线观看| 91极品视频在线| 亚洲级视频在线观看免费1级| 欧美麻豆久久久久久中文| 国产精品免费一区二区三区都可以| 一区二区三区 在线观看视| 91精品国产综合久久久久久久久| 亚洲激情视频在线播放| 久久久久九九九九| 国产日韩一区在线| 精品久久久中文| 国产成人啪精品视频免费网|