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

首頁 > 編程 > C++ > 正文

C++設(shè)計模式之橋接模式

2020-05-23 14:21:22
字體:
供稿:網(wǎng)友
這篇文章主要介紹了C++設(shè)計模式之橋接模式,本文講解了什么是橋接模式、為什么要使用橋接模式、什么時候使用橋接模式等內(nèi)容,需要的朋友可以參考下
 
 

問題描述

現(xiàn)在要去畫一個圖形,圖形有長方形、圓形和扇形等等;而圖形又可以加上不同的顏色,然后,我們就可以畫出紅色的長方形,綠色的長方形;紅色的圓形,綠色的圓形等等。而這種圖形的形狀在變化,圖形的顏色也在變化,當使用代碼去實現(xiàn)時,如何面對這種多方面的變化呢?這就要說到今天的橋接模式了。

什么是橋接模式?

對于上述的圖形與顏色的問題時,很多時候,我們讓各個圖形類繼承顏色類,比如:

復(fù)制代碼代碼如下:

class CShape
{
};
class CRectangle : public CShape
{
};
class CCircle : public CShape
{
};
class CColor
{
};
class CRed : public CColor
{
};
class CBlue : public CColor
{
};
class CRedRectangle : public CRed
{
};
class CBlueRectangle : public CBlue
{
};

 

每當我們增加一個新的圖形,或者增加一種新的顏色時,對應(yīng)的類就會以相乘的速度進行增加。當系統(tǒng)中的類變的多時,對應(yīng)的管理也就變的復(fù)雜,這不是我們希望看到的。同時,我們可以看到CRedRectangle類繼承自CRed類,這種繼承關(guān)系合理嗎?且不說有的系統(tǒng)是如此實現(xiàn)的,紅色的矩形是紅色嗎?很顯然,CRedRectangle和CRed之間不是一種is-a的關(guān)系,所以,上面的實現(xiàn)是及其不合理的。那么它們是什么關(guān)系呢?接著往下看。

在GOF的《設(shè)計模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》一書中對橋接模式是這樣說的:將抽象部分和它的實現(xiàn)部分分離,使它們都可以獨立的變化。簡單粗暴的說,就是抽象對外提供調(diào)用的接口;對外隱瞞實現(xiàn)部分,在抽象中引用實現(xiàn)部分,從而實現(xiàn)抽象對實現(xiàn)部分的調(diào)用,而抽象中引用的實現(xiàn)部分可以在今后的開發(fā)過程中,切換成別的實現(xiàn)部分。

為什么要使用橋接模式?

當一個抽象可能有多個實現(xiàn)時,通常用繼承來協(xié)調(diào)它們。抽象類定義對該抽象的接口,而具體的子類則用不同方式加以實現(xiàn)。但是此方法有時不夠靈活。繼承機制將抽象部分與它的實現(xiàn)部分固定在一起,使得難以對抽象部分和實現(xiàn)部分獨立的進行修改、擴充和重用。橋接模式把依賴具體實現(xiàn),提升為依賴抽象,來完成對象和變化因素之間的低耦合,提高系統(tǒng)的可維護性和擴展性。橋接模式的主要目的是將一個對象的變化與其它變化隔離開,讓彼此之間的耦合度最低。

什么時候使用橋接模式?

1.如果不希望在抽象和它的實現(xiàn)部分之間有一個固定的綁定關(guān)系,也就是繼承關(guān)系;如果我們打破了這種固定的綁定關(guān)系,以后,就可以方便的在抽象部分切換不同的實現(xiàn)部分;

2.如果希望類的抽象以及它的實現(xiàn)都應(yīng)該可以通過生成子類的方法加以擴充;如果不使用橋接模式,使用繼承去實現(xiàn)時,在抽象類中添加一個方法,則在對應(yīng)的實現(xiàn)類中也需要做對應(yīng)的改動,這種實現(xiàn)不符合松耦合的要求;

3.如果要求對一個抽象的實現(xiàn)部分的修改對客戶不產(chǎn)生影響,即客戶的代碼不需要重新編譯,在后面的項目經(jīng)驗會說這方面;

4.如果想對客戶完全隱藏抽象的實現(xiàn)部分;

5.如果一個對象有多個變化因素的時候,通過抽象這些變化因素,將依賴具體實現(xiàn),修改為依賴抽象;

6.如果某個變化因素在多個對象中共享時,可以抽象出這個變化因素,然后實現(xiàn)這些不同的變化因素。

上面使用的場景,是一種建議,也是一種參考。在項目中要很好的把握一個設(shè)計模式,是有一定的難度的;當在實際項目中遇到滿足上面的一點或者幾點時,可以考慮使用橋接模式。

UML類圖

C++設(shè)計模式之橋接模式

Abstraction類定義了抽象類的接口,并且維護一個指向Implementor實現(xiàn)類的指針;

RefineAbstraction類擴充了Abstraction類的接口;

Implementor類定義了實現(xiàn)類的接口,這個接口不一定要與Abstraction的接口完全一致;實際上,這兩個接口可以完全不同;

ConcreteImplementor類實現(xiàn)了Implementor定義的接口。

代碼實現(xiàn)

 

復(fù)制代碼代碼如下:

/*
** FileName     : BridgePatternDemo
** Author       : Jelly Young
** Date         : 2013/12/4
** Description  : More information, please go to http://www.49028c.com
*/
#include <iostream>
using namespace std;
class Implementor
{
public:
     virtual void OperationImpl() = 0;
};
class ConcreteImpementor : public Implementor
{
public:
     void OperationImpl()
     {
          cout<<"OperationImpl"<<endl;
     }
};
class Abstraction
{
public:
     Abstraction(Implementor *pImpl) : m_pImpl(pImpl){}
     virtual void Operation() = 0;
protected:
     Implementor *m_pImpl;
};
class RedfinedAbstraction : public Abstraction
{
public:
     RedfinedAbstraction(Implementor *pImpl) : Abstraction(pImpl){}
     void Operation()
     {
          m_pImpl->OperationImpl();
     }
};
int main(int argc, char *argv[])
{
     Implementor *pImplObj = new ConcreteImpementor();
     Abstraction *pAbsObj = new RedfinedAbstraction(pImplObj);
     pAbsObj->Operation();
     delete pImplObj;
     pImplObj = NULL;
     delete pAbsObj;
     pAbsObj = NULL;
     return 0;
}

 

根據(jù)對代碼的理解,能想象到CRedRectangle和CRed是什么關(guān)系嗎?我們可以理解為紅色的矩形包含紅色,也就是包含的關(guān)系,也就是軟件設(shè)計中的組合關(guān)系(has-a)。

項目經(jīng)驗

這是一個我經(jīng)歷的項目,也是做起來比較輕松的一個項目。項目是這樣的,需要對一個中間的通信庫進行改寫,保留以前的通信方式的同時,需要使用一種新的通信協(xié)議去和底層模塊進行通信?,F(xiàn)有的代碼是一個COM程序,向外提供了可以調(diào)用的接口。根據(jù)客戶提供的源碼,我們進行了分析;在分析之前,我們有一種擔心,就是怕用戶的代碼是接口和實現(xiàn)混在一起的;但是,分析之后,讓我們很吃驚,客戶的代碼結(jié)構(gòu)很清晰,層次非常清楚,代碼中使用的就是我們今天這里說的橋接模式。由于抽象的接口和實現(xiàn)完全進行了分離,我們在進行重寫時,只需要實現(xiàn)我們的一個類,然后在接口中引用我們實現(xiàn)的類,就大功告成了,這樣做到了客戶端不需要做任何修改,就可以完美的替換掉原來的通信層,真的是前人栽樹樹,后人乘涼啊。

總結(jié)

橋接模式使得抽象和實現(xiàn)進行了分離,抽象不用依賴于實現(xiàn),讓抽象和實現(xiàn)部分各自修改起來都很方便,使用組合(就是Abstraction類中包含了Implementor)的方式,降低了耦合度,同時也有助于分層,從而產(chǎn)生更好的結(jié)構(gòu)化系統(tǒng)。通過實際的項目經(jīng)驗,使用了橋接模式的代碼,對以后的擴展有很大的幫助。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
欧洲av一区二区三区| 欧美一区二区在线视频观看| 欧美大片在线影院| 91视频网页| 亚洲精品a区| 人人妻人人澡人人爽人人欧美一区| 日本一本久久| 日韩欧美成人激情| 欧美成人午夜做爰视频在线观看| 久久人人爽亚洲精品天堂| 午夜精品免费观看| 亚洲 国产 日韩 欧美| 超碰公开在线| 亚洲精品日韩久久久| jjzz在线观看| 国产99视频在线观看| 欧美性猛片xxxxx免费中国| 久久综合九九| 欧美成年人视频网站欧美| 偷窥韩漫第三季| 疯狂揉花蒂控制高潮h| 免费在线看成人av| 国产福利一区二区三区| 国产91丝袜在线播放0| 高潮按摩久久久久久av免费| 3d成人h动漫网站入口| 欧美黄色一级大片| 四虎免费在线观看| 少妇被躁爽到高潮无码文| 丰满少妇一区二区| 久久精品夜色噜噜亚洲a∨| 国产伦精品一区二区三区千人斩| 国产精品一区二区av影院萌芽| 中文字幕日韩av电影| 男人天堂亚洲二区| 国产精品原创视频| 91精品啪在线观看国产手机| 7777精品久久久大香线蕉小说| 韩国日本一区二区三区| 亚洲人在线观看| 亚洲亚洲免费| 成人18视频日本| 日韩美女在线播放| 日韩在线观看免费高清| 国产精品无码av在线播放| 免费欧美激情| 电影午夜精品一区二区三区| 国产天堂视频| 欧美视频网址| 美女的奶胸大爽爽大片| 夜级特黄日本大片_在线| gogogo免费高清日本写真| 日韩一级片播放| 538精品在线视频| 黄大色黄女片18第一次| 国产又黄又猛的视频| 成人网18免费网站在线| 麻豆tv在线播放| 亚洲成人手机在线观看| 国产在线一级片| 欧美国产视频一区二区| 欧美日韩亚洲一区二区三区在线| 久久免费精品视频在这里| 久久66热re国产| 欧美一级日韩免费不卡| 久久亚洲捆绑美女| 男女在线观看视频| 亚洲xxx视频| 精品久久久久中文字幕小说| 亚洲综合激情在线| 99国产精品久久| 亚洲人成免费电影| 亚洲欧美日韩一区二区在线| 日韩伦理在线视频| 天天综合色天天综合色h| 国产精品丝袜xxxxxxx| 黄色18在线观看| 亚洲国产一区二区三区四区| 亚洲最大色综合成人av| 日本在线观看天堂男亚洲| 国一区二区在线观看| 2018中文字幕一区二区三区| a在线播放不卡| www.毛片| 中文在线观看免费高清| 日本天堂网在线| 国产精品豆花视频| 国产suv一区二区三区| 久久综合色一综合色88| 欧美日韩中字| 国产原创av在线| 女仆av观看一区| 亚洲美女少妇无套啪啪呻吟| 2022成人影院| 欧美成人欧美edvon| 欧美一级成年大片在线观看| 欧洲精品一区二区三区久久| 国产探花一区| 亚洲va在线va天堂va偷拍| 欧美一区二区影视| 东方伊人免费在线观看| 97精品在线观看| 日韩欧美成人激情| 一区二区三区四区在线看| 向日葵污视频在线观看| 亚洲无线看天堂av| 懂色av中文一区二区三区| 丝袜+亚洲+另类+欧美+变态| 疯狂做受xxxx欧美肥白少妇| 国户精品久久久久久久久久久不卡| 欧美第一在线视频| 欧美精品久久久久| 婷婷开心激情综合| 日韩在线视频第一页| 欧美疯狂做受xxxx富婆| vam成人资源在线观看| 国产亚洲一区二区三区啪| 日韩福利电影在线观看| 久久中文字幕av一区二区不卡| 美女福利一区二区三区| 日韩激情网站| 中国日本在线视频中文字幕| 欧美影视一区| 综合激情网五月| 久久99国产精品久久99大师| 成人黄在线观看| 性做爰过程免费播放| 免费看的黄色欧美网站| 午夜免费福利在线| 一个人看免费www视频有多爽| 国产一级aa大片毛片| 国产片在线播放| 在线观看视频一区二区| 日本三级电影免费观看| 日日噜噜噜噜人人爽亚洲精品| 中文久久乱码一区二区| 在线观看区一区二| 国产精品日韩欧美| 国产在线www| 日韩精品自拍偷拍| 久久久成人的性感天堂| 日韩在线观看电影完整版高清免费| 久久亚洲一区二区三区明星换脸| 久久久久久久91| 亚洲欧美日本在线观看| 尤物tv国产一区| 水蜜桃亚洲精品| eeuss鲁丝片eeuss影院| 国产美女诱惑一区二区| 一本色道久久综合亚洲aⅴ蜜桃| 欧洲av在线播放| 国产一级二级三级精品| 男人的天堂亚洲| 国产一区二区激情| jizzjizz欧美69巨大| 国产福利短视频| 亚洲va中文在线播放免费| 香蕉视频黄色片| 亚洲色图欧美在线| 欧美成人中文字幕在线| 超碰在线免费看| 精品久久久久久久久久中文字幕| 香蕉久久精品日日躁夜夜躁| 欧美性老头oldtight| 色在线中文字幕| 国产三级精品在线| 国产精品系列在线播放| 日皮视频免费观看| 欧美色图俺去了| 青青草国产在线观看| 麻豆精品在线| 思思99精品视频在线观看| 免费观看30秒视频久久| 久久综合成人精品亚洲另类欧美| 精品成人久久av| eeuss影院www影院| 国产性生活大片| 欧美国产日韩精品免费观看| 成人女保姆的销魂服务| 日韩精品每日更新| 欧美系列日韩一区| av先锋影院| 亚洲精品一区二区三区99| 一级香蕉视频在线观看| 免费a级人成a大片在线观看| 日本中文在线| 国产免费xxx| 中国毛片在线观看| 亚洲精品第一国产综合精品| 99久久99九九99九九九| 污的视频网站| 久久99精品久久久久久欧洲站| 成人黄色大片在线观看| 麻豆精品永久免费视频| 国产在线观看18| 欧美中日韩在线| 潘金莲一级淫片aaaaaa播放| 亚洲第一影院| 678五月天丁香亚洲综合网| 九九视频免费在线观看| 精彩国产在线| 俺去啦俺在线观看| 欧美老人xxxx18| 欧美日韩国产一区中文午夜| 精品欧美午夜寂寞影院| 国产乱码精品1区2区3区| 尤物tv在线精品| 在线视频亚洲专区| 免费在线看黄网址| 亚洲资源在线看| 女人18毛片水真多18精品| 999久久久精品一区二区| 午夜精品福利视频网站| 亚洲精品91在线| 国产视频三级在线观看播放| 欧美成人黄色小视频| 国产精品丝袜久久久久久不卡| 国产精品yjizz视频网| 中文字幕在线看视频国产欧美在线看完整| 97超碰成人| 在线视频在线视频7m国产| 日韩漫画puputoon| 日韩亚洲在线| 国产免费一区二区三区免费视频| 免费视频网站在线观看入口| 日韩一二在线观看| 欧美精品色婷婷五月综合| 性久久久久久久久久| 91一区二区在线| 夜夜嗨av一区二区三区四区| h短视频大全在线观看| 强开小嫩苞一区二区三区视频| 中文字幕在线三区| 日韩欧美国产综合一区| 欧美激情论坛| 一区二区在线免费视频| 午夜不卡一区| 2021av网站| 黄色一级大片在线免费看产| 欧美日韩综合不卡| 久久资源综合| 久久久久中文| 国产日韩精品视频| 欧美成人免费观看| 国产对白videos麻豆高潮| 潘金莲一级黄色片| 99久久精品免费看| 国产一区二区免费| 日韩精品一区在线| 熟女俱乐部一区二区视频在线| 图片专区亚洲欧美另类| 国产精品女人网站| 日韩国产欧美精品一区二区三区| 中文资源在线播放| 图片区小说区区亚洲五月| 男人添女人下部高潮视频在线观看| www精品国产| www成人免费观看| a级大胆欧美人体大胆666| 狠狠色丁香九九婷婷综合五月| 国产在线久久久| 亚洲欧美自偷自拍| 国产精品免费在线视频| 欧美色视频一区二区三区在线观看| 伊人色**天天综合婷婷| 香蕉视频国产精品| 久久riav二区三区| 2020色愉拍亚洲偷自拍| 日韩av在线播放资源| 久久99导航| 国产美女精品人人做人人爽| 国产精品露出视频| 国产精品电影网| 国产男女无套在线播放| 视频在线观看一区二区| 最新欧美日韩亚洲| 欧美中日韩在线| 国产成人无码精品久在线观看| 日本暖暖在线视频| 欧美日韩一区二区三区四区不卡| 欧美日韩国产一区在线| 欧美日韩综合不卡| 亚洲在线播放| 欧洲亚洲免费视频| 在线视频观看你懂的| 精品国产99久久久久久宅男i| 人与动物性xxxx| 欧美成人合集magnet| 国内不卡的一区二区三区中文字幕| 欧美一区二区三区的| 无码av免费一区二区三区试看| 性欧美video另类hd尤物| 国产99久久精品一区二区| 亚洲一本二本| 99热在线只有精品| 久久久久久久久久久久av| 色狠狠一区二区三区香蕉| 国产精品丝袜黑色高跟鞋| 男女羞羞视频在线观看| 污色网站在线观看| 六月婷婷综合| 欧美日韩一级黄色片| 免费在线日韩av| 亚洲色欲综合一区二区三区| 亚洲在线视频福利| 亚洲精品亚洲人成在线| 美女一区二区三区在线观看| 三级视频网站在线观看| 国产美女自慰在线观看| 婷婷国产成人久久精品激情| blackedav金发美女大战黑人| 日本免费不卡视频| 国内精品久久久久久久影视蜜臀| 成人免费看片98| 亚洲精品国产无天堂网2021| 神马欧美一区二区| 国产一级黄色录像| 在线视频中文字幕久| 国产一级在线免费观看| 久热在线视频精品网站| 国产女呦网站| 国产日韩一区欧美| 国产精品视频一区二区三区四蜜臂| 日本一区二区视频在线播放| 色尼玛亚洲综合影院| 亚洲视频精品在线| 欧美国产成人精品| 国产调教打屁股xxxx网站|