橋接模式

一、優(yōu)點(diǎn):
1. 將抽象部份與它的實(shí)現(xiàn)部份分離跋炕,使它們都可以獨(dú)立地變化赖晶;遵循依賴倒置原則;
2. 將可以共享的變化部分辐烂,抽離出來(lái)遏插,減少了代碼的重復(fù)信息;
3. 橋接模式是一種很實(shí)用的結(jié)構(gòu)型模式纠修,如果軟件系統(tǒng)中某個(gè)類存在兩個(gè)獨(dú)立變化的維度胳嘲,通過(guò)該模式可以將這兩個(gè)維度分離出來(lái),使兩者可以獨(dú)立擴(kuò)展扣草,讓系統(tǒng)更加符合單一職責(zé)原則了牛。
二、原則:
設(shè)計(jì)中有超過(guò)一維的變化我們就可以用橋模式辰妙。如果只有一維在變化鹰祸,那么我們用繼承就可以圓滿的解決問(wèn)題。優(yōu)先使用對(duì)象的合成/聚合將有助于保持每個(gè)類被封裝密浑,并被集中在單個(gè)任務(wù)上蛙婴。這樣類和類繼承層次會(huì)保持較小規(guī)模,并且不太可能增長(zhǎng)為不可控制的龐然大物尔破。
三敬锐、常用的場(chǎng)景:
1. 當(dāng)一個(gè)對(duì)象有多個(gè)變化因素的時(shí)候,考慮依賴于抽象的實(shí)現(xiàn)呆瞻,而不是具體的實(shí)現(xiàn)台夺。
2. 當(dāng)多個(gè)變化因素在多個(gè)對(duì)象間共享時(shí),考慮將這部分變化的部分抽象出來(lái)再聚合/合成進(jìn)來(lái)痴脾。
3. 當(dāng)我們考慮一個(gè)對(duì)象的多個(gè)變化因素可以動(dòng)態(tài)變化的時(shí)候颤介,考慮使用橋接模式。
四、實(shí)例:
在不同品牌電腦上安裝操作系統(tǒng)滚朵;不同品牌電腦可以是聯(lián)想冤灾、Dell、蘋果辕近、方正韵吨、宏基等等;不同操作系統(tǒng)可以是windows10移宅、Mac os归粉、linux等等;可以將操作系統(tǒng)漏峰、品牌電腦按各自的方向抽象糠悼;再通過(guò)合成/聚合的方式關(guān)聯(lián)起來(lái);

//操作系統(tǒng)
class OS
{
public:
    virtual void InstallOS_Imp() {}
};
class WindowOS: public OS
{
public:
    void InstallOS_Imp() { cout<<"安裝Window操作系統(tǒng)"<<endl; } 
};
class LinuxOS: public OS
{
public:
    void InstallOS_Imp() { cout<<"安裝Linux操作系統(tǒng)"<<endl; } 
};
class UnixOS: public OS
{
public:
    void InstallOS_Imp() { cout<<"安裝Unix操作系統(tǒng)"<<endl; } 
};
//計(jì)算機(jī)
class Computer
{
public:
    virtual void InstallOS(OS *os) {}
};
class DellComputer: public Computer
{
public:
    void InstallOS(OS *os) { os->InstallOS_Imp(); }
};
class AppleComputer: public Computer
{
public:
    void InstallOS(OS *os) { os->InstallOS_Imp(); }
};
class HPComputer: public Computer
{
public:
    void InstallOS(OS *os) { os->InstallOS_Imp(); }
};
int main()
{
    OS *os1 = new WindowOS();
    OS *os2 = new LinuxOS();
    Computer *computer1 = new AppleComputer();
    computer1->InstallOS(os1);
    computer1->InstallOS(os2);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末浅乔,一起剝皮案震驚了整個(gè)濱河市倔喂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌靖苇,老刑警劉巖席噩,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異贤壁,居然都是意外死亡班挖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門芯砸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人给梅,你說(shuō)我怎么就攤上這事假丧。” “怎么了动羽?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵包帚,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我运吓,道長(zhǎng)渴邦,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任拘哨,我火速辦了婚禮谋梭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘倦青。我一直安慰自己瓮床,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著隘庄,像睡著了一般踢步。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丑掺,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天获印,我揣著相機(jī)與錄音,去河邊找鬼街州。 笑死兼丰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的菇肃。 我是一名探鬼主播地粪,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼琐谤!你這毒婦竟也來(lái)了蟆技?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤斗忌,失蹤者是張志新(化名)和其女友劉穎质礼,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體织阳,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡眶蕉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了唧躲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片造挽。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖弄痹,靈堂內(nèi)的尸體忽然破棺而出饭入,到底是詐尸還是另有隱情,我是刑警寧澤肛真,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布谐丢,位于F島的核電站,受9級(jí)特大地震影響蚓让,放射性物質(zhì)發(fā)生泄漏乾忱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一历极、第九天 我趴在偏房一處隱蔽的房頂上張望窄瘟。 院中可真熱鬧,春花似錦趟卸、人聲如沸寞肖。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)新蟆。三九已至觅赊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間琼稻,已是汗流浹背吮螺。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留帕翻,地道東北人鸠补。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嘀掸,于是被迫代替她去往敵國(guó)和親紫岩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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

  • 場(chǎng)景 某公司準(zhǔn)備開(kāi)發(fā)一個(gè)跨平臺(tái)圖像瀏覽系統(tǒng)睬塌,要求可以顯示JPG泉蝌、PNG等多種格式圖片,并且能夠在Windows揩晴、L...
    皆為序幕_閱讀 361評(píng)論 0 0
  • 在正式介紹橋接模式之前勋陪,我先跟大家談?wù)剝煞N常見(jiàn)文具的區(qū)別,它們是毛筆和蠟筆硫兰。假如我們需要大中小3種型號(hào)的畫筆诅愚,能夠...
    justCode_閱讀 1,764評(píng)論 0 7
  • 標(biāo)簽(空格分隔):橋接模式 橋接模式: 將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立的變化 由于對(duì)象的繼承關(guān)系是...
    查無(wú)此人_chazz閱讀 195評(píng)論 0 0
  • ??注意:如果不想浪費(fèi)時(shí)間,請(qǐng)一定要點(diǎn)我劫映。 ??在現(xiàn)實(shí)生活中违孝,有些類具有多個(gè)維度的變化,比如圖形既可以按照形狀劃分...
    布魯斯理閱讀 977評(píng)論 0 1
  • 一泳赋、橋接模式(Bridge Pattern) 在現(xiàn)實(shí)生活中雌桑,某些類具有兩個(gè)或多個(gè)維度的變化,如圖形既可按形狀分摹蘑,又...
    dongrui100閱讀 525評(píng)論 0 0