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

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

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

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

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

設計模式學習筆記

——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("打開開關?。。。?quot;);      }      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乱大交| 精品成人国产在线观看男人呻吟| 久久精品国产亚洲| 久久精品国产亚洲精品| 欧美日韩999| 另类天堂视频在线观看| 国产午夜精品全部视频在线播放| 日韩欧美大尺度| 91久久久久久久一区二区| 国产91色在线| 精品无人区乱码1区2区3区在线| 亚洲a级在线播放观看| 国产精品久久久久久五月尺| 91网站在线看| 国产精品视频导航| 国模精品一区二区三区色天香| …久久精品99久久香蕉国产| 国产精品视频一区二区高潮| 国产精品xxxxx| 久热爱精品视频线路一| 深夜成人在线观看| 国产美女直播视频一区| 欧美老少配视频| 中文字幕一区电影| 亚洲国产精品国自产拍av秋霞| 亚洲精品日韩在线| 国产精品女人网站| 国产精品久久久久久久电影| 国产一区私人高清影院| 日韩电影中文字幕在线观看| 日韩av三级在线观看| 欧美亚洲国产另类| 久久精品国产一区二区三区| 红桃视频成人在线观看| 亚洲第一在线视频| 中文字幕日韩欧美| 国产中文字幕91| 欧美综合一区第一页| 91嫩草在线视频| 亚洲电影中文字幕| 亚洲xxxx做受欧美| 欧美亚洲一级片| 欧美性猛交xxxx偷拍洗澡| 亚洲欧美国产一本综合首页| 成人亚洲综合色就1024| 日韩久久免费电影| 久久精品夜夜夜夜夜久久| 色与欲影视天天看综合网| 久久免费视频网| 国产精品都在这里| 欧美激情视频一区二区三区不卡| 中国china体内裑精亚洲片| 欧美日韩性视频在线| 久热国产精品视频| 亚洲国语精品自产拍在线观看| 深夜福利国产精品| 日韩电影免费观看中文字幕| 亚洲xxxx做受欧美| 久久久久这里只有精品| 欧美一级淫片aaaaaaa视频| 在线日韩欧美视频| 美女福利视频一区| 社区色欧美激情 | 最近2019中文字幕第三页视频| 亚洲a区在线视频| 国产精品久久久久久久久影视| 欧美一级黄色网| 亚洲人av在线影院| 亚洲无线码在线一区观看| 亚洲国产精品字幕| 亚洲精品免费一区二区三区| 亚洲自拍小视频免费观看| 国产激情999| 久久成人人人人精品欧| 国产精品美女久久久免费| 国产午夜精品全部视频在线播放| 国产成人精品日本亚洲| 欧美久久精品午夜青青大伊人| 欧美精品久久久久久久久| 在线色欧美三级视频| 色综合亚洲精品激情狠狠| 日韩av黄色在线观看| 高清一区二区三区四区五区| 国产91九色视频| 欧美电影在线观看| 亚洲va欧美va国产综合剧情| 欧洲亚洲免费在线| 亚洲福利在线视频| 亚洲大胆人体av| 92裸体在线视频网站| 亚洲第一视频在线观看| 欧美激情手机在线视频| 亚洲精品动漫100p| 国产亚洲人成网站在线观看| 自拍偷拍亚洲在线| 色无极影院亚洲| 亚洲欧美一区二区三区久久| 亚洲第一精品久久忘忧草社区| 久久久精品久久久| 成人女保姆的销魂服务| 91香蕉嫩草神马影院在线观看| 亚洲精品第一国产综合精品| 久久精品国亚洲| 欧美国产在线电影| 亚洲精品国产精品自产a区红杏吧| 日韩在线视频一区| 久久影视三级福利片| 国产亚洲精品成人av久久ww| 欧美超级乱淫片喷水| 亚洲欧美日韩中文在线制服| 中文在线资源观看视频网站免费不卡| 欧美激情精品在线| 亚洲欧美另类人妖| 欧美日韩国产精品一区二区不卡中文| 欧美性猛交xxxx乱大交3| 孩xxxx性bbbb欧美| 精品国产乱码久久久久久虫虫漫画| 黄网动漫久久久| 国产精品国产三级国产专播精品人| 69视频在线播放| 欧美韩日一区二区| 国产欧美一区二区三区在线看| 欧美视频在线免费| 亚洲一区二区三区乱码aⅴ蜜桃女| 日韩av观看网址| 日韩欧美精品在线观看| www.国产精品一二区| 欧美日韩中文字幕在线视频| 久久成人精品电影| 国产精品白丝jk喷水视频一区| 亚洲女同性videos| 国产精品第一视频| 亚洲伦理中文字幕| 国产成人精品一区| 国产91ⅴ在线精品免费观看| 欧美激情手机在线视频| 久久国产精品电影| 欧美成年人视频网站| 亚洲欧美999| 久久精品国产清自在天天线| 亚洲福利在线看| 亚洲精品国产精品久久清纯直播| 欧美裸体xxxx极品少妇软件| 久热精品视频在线观看| 欧美日韩国产丝袜美女| 欧美日韩一区二区在线| 日韩中文字幕精品视频| 91高清视频免费| 久久精品久久久久电影| 26uuu久久噜噜噜噜| 97国产精品视频人人做人人爱| 精品久久久久久久大神国产| 国产日产久久高清欧美一区| 在线精品国产成人综合| 欧美激情视频网址| 国产日韩精品在线播放| 8x海外华人永久免费日韩内陆视频| 午夜精品久久久久久久久久久久久| 一二美女精品欧洲| 日韩一区二区久久久| 91精品国产综合久久男男|