日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

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

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

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

問題描述

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

什么是橋接模式?

對(duì)于上述的圖形與顏色的問題時(shí),很多時(shí)候,我們讓各個(gè)圖形類繼承顏色類,比如:

復(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
{
};

 

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

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

為什么要使用橋接模式?

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

什么時(shí)候使用橋接模式?

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

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

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

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

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

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

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

UML類圖

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

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

RefineAbstraction類擴(kuò)充了Abstraction類的接口;

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

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

代碼實(shí)現(xiàn)

 

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

/*
** FileName     : BridgePatternDemo
** Author       : Jelly Young
** Date         : 2013/12/4
** Description  : More information, please go to http://www.conghuacea.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ù)對(duì)代碼的理解,能想象到CRedRectangle和CRed是什么關(guān)系嗎?我們可以理解為紅色的矩形包含紅色,也就是包含的關(guān)系,也就是軟件設(shè)計(jì)中的組合關(guān)系(has-a)。

項(xiàng)目經(jīng)驗(yàn)

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

總結(jié)

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


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产成人精品免费久久久久| 日韩欧美中文字幕在线播放| 日本亚洲视频在线| 最近中文字幕第一页| 欧美99久久| 亚洲男女av一区二区| 男人的天堂网av| 国产欧美日韩第一页| 亚洲国内精品视频| 日韩在线视频免费观看| 美日韩精品免费视频| 精品视频www| 欧美一级日韩不卡播放免费 | aa国产成人| √天堂资源中文www| 91精品国产调教在线观看| 91久久久精品国产| 日韩午夜一区| 日本一级一片免费视频| 欧美日韩国产中文| 国产高清精品二区| 日韩专区视频网站| 国产高清视频一区二区| 国产亚洲欧美色| 午夜av一区二区| 亚洲一级网站| 欧美一级二级三级区| 91蜜桃婷婷狠狠久久综合9色| 日韩欧美中文字幕一区| 中文字幕在线视频久| 一区二区视频在线观看免费的| 欧美日韩国产首页在线观看| 亚洲va韩国va欧美va精品| 九色蝌蚪视频在线| 国产乱国产乱300精品| 国产精品一区二区三区免费观看| 中文字幕伊人| 国产婷婷在线观看| 国产综合成人久久大片91| 国产视频1区2区| 亚洲深夜福利| 91精品国产99| 在线免费视频一区二区| 免费高清特黄a大片| 蜜桃视频中文字幕| 日韩一级免费在线观看| av中文在线播放| 国产激情99| 中文字幕日韩在线视频| 在线日韩中文字幕| 欧美日韩中文字幕日韩欧美| 精品一区二区三区中文字幕 | 91麻豆免费视频网站| 久久精品www| 成人精品视频一区| 精品视频久久| 国产在线www| 日韩美女视频一区二区在线观看| 天堂在线中文| 国产三级视频网站| 亚洲福利在线视频| 日韩欧美99| 中文字幕欧美日韩精品| 日韩在线观看视频一区二区| 91精品免费看| 国产伦精品免费视频| 欧美va亚洲va日韩∨a综合色| 一区在线视频观看| 精品成人久久av| 国产欧美日韩中文| 午夜精品一区二区三区视频免费看| 久久电影国产免费久久电影| 久久久综合av| 国产99精品| 国产蜜臀在线| 国产香蕉免费精品视频| 一本大道一区二区三区| 亚洲羞羞网站| 欧美日韩国产高清| 久久久精品午夜少妇| 国产乱码午夜在线视频| 国产日韩电影| 欧美日韩中文另类| 久精品在线观看| 亚洲福利在线看| 国产欧美日韩最新| 中文字幕日韩在线观看| 亚洲国产欧美91| 一区二区在线观| а√天堂8资源中文在线| 国产欧美三级| 99视频一区| 中文字幕在线导航| 在线观看国产一级片| 日韩精品在线第一页| 欧美日韩精品不卡| 欧美日韩高清在线| 91久久久精品国产| 在线观看精品国产| 国产绿帽一区二区三区| 国产一区不卡精品| 久久精品网站免费观看| 国产高清在线视频| 国产999精品在线观看| 99综合视频| 国产高清精品二区| 中文字幕欧美日韩精品| 99国内精品| 国产网站欧美日韩免费精品在线观看| 国产 中文 字幕 日韩 在线| 深夜福利一区二区| 国产在线二区| 精品欧美久久久| 亚洲成av人综合在线观看| 成人福利一区| 久久精品国产成人一区二区三区| 1区2区3区在线视频| 日韩欧美在线视频日韩欧美在线视频| 亚洲综合在线小说| 国产导航在线| 日韩你懂的电影在线观看| 97国产视频| 欧美日韩国产高清视频| 天堂在线中文| 国产三级在线| 91久久精品网| 一区三区视频| 玖玖在线免费视频| 日韩视频一区在线观看| 一区二区国产在线| 日韩久久不卡| 久久精品国产视频| 亚洲免费专区| 日韩免费精品视频| 欧美日韩精品中文字幕| 日韩久久99| 亚洲娇小xxxx欧美娇小| 日韩美女视频一区二区在线观看| 欧美一级久久久久久久久大| 国产免费久久久| 不卡在线视频| 成人禁用看黄a在线| 欧美成人vr18sexvr| 国产三级在线观看视频| 综合图区亚洲白拍在线| 在线黄色国产电影| 欧美日韩国产在线播放| 欧美日韩在线播放一区| 91精品国产综合久久久久| 国产午夜精品视频免费不卡69堂| 婷婷中文字幕一区三区| 国产色在线视频| 精品国产1区2区3区| 91 中文字幕| 婷婷中文字幕一区三区| 国产乱一区二区| 国产欧美日韩精品在线观看| 日韩在线视频精品| 欧美日韩亚州综合| 久久精品国产视频| 激情综合色综合久久| 日韩欧美国产高清91| 亚洲免费在线观看av| 亚洲黄色一区二区| 日韩中文字幕久久| 国产乱国产乱300精品| 日韩免费电影网站| 日韩精品在线观看视频| 日韩欧美不卡视频| 在线国产一级| 日韩欧美高清在线| 欧美日韩国产一二三| 中文字幕线观看| 在线视频第一页| 一区二区三区鲁丝不卡| 久久久综合精品| 中文字幕视频在线免费欧美日韩综合在线看| 阿v免费在线观看| 欧美日韩国产高清一区| 国产在线黄色片| 在线观看一区日韩| 国产在线高潮| 日韩精品a在线观看91| 日韩午夜中文字幕| 国产在线导航| 99精品视频国产| 亚洲综合日韩| 国产激情99| 精品日韩欧美| 亚洲欧美伊人| 国产日韩中文字幕在线| 二区视频在线观看| 欧美在线亚洲一区| 天堂精品高清1区2区3区| 国产成人日日夜夜| 色综合久久六月婷婷中文字幕| 日韩视频在线观看一区| 国产v日产∨综合v精品视频| 在线欧美日韩国产| 一区二区高清视频| av免费在线观看网址| 在线中文字幕视频| 精品午夜av| 国产欧美日韩91| wwwww亚洲| 欧美不卡123| 日韩欧美在线综合| 精品日韩视频在线观看| 国产黄在线看| 欧美日韩精品免费在线观看视频| 欧美高清一区| 99精品视频国产| 日韩在线高清| 精品一区二区在线观看视频| 中文字幕亚洲免费| 国产成人精品日本亚洲专区61| 国产高清大尺度一区二区不卡| 欧美日韩在线播放一区| 亚洲 欧美 中文字幕| 欧美日韩视频网站| av丝袜在线| 国产在成人精品线拍偷自揄拍| 中文字幕亚洲欧美| 午夜国产视频| a级在线免费观看| 亚洲福利一区二区三区| 欧美日韩国产免费观看视频| 欧美日韩在线观看一区| 国产又粗又猛又爽又黄91精品| 久精品在线观看| 91精品国产自产在线观看永久∴| 日韩字幕在线观看| 中文字幕在线官网| 日韩视频1区| 一区视频在线播放| 在线亚洲免费| 国产在线拍偷自揄拍精品| 色综合久久六月婷婷中文字幕| 亚洲一区中文| 日韩欧美在线网站| 一区二区三区在线播放欧美| 欧美在线日韩在线| 欧美乱大交xxxxx免费| 欧美日韩成人综合| 日韩亚洲一区在线| 国产中文在线观看| 欧美一级日韩不卡播放免费| 国产成人精品三级| 91精选在线| www 日韩| 最近中文字幕第一页| 国产乱国产乱老熟300| 午夜av一区二区| 日韩欧美一级精品久久| 尤物在线精品| 国产视频2区| 二区中文字幕| 国产69精品久久app免费版| 欧美日韩精品在线视频| 精品国产免费观看一区| 中文字幕亚洲乱码| 第一页在线观看| 亚洲欧美视频一区二区三区| 久久69成人| 精品网站999www| 日韩欧美国产高清91| 一级国产黄色片| 不卡一区2区| 精品国产欧美成人夜夜嗨| 国产成人精品三级| 不卡视频一区二区| 日韩激情一区| 91精品国产91久久| 在线看av的网址| 一区二区三区中文字幕在线观看| 一区二区三区精品久久久| 欧美激情一区二区在线| 亚洲国产www| 欧美三级日韩三级| 91国内在线| 欧美一级手机免费观看片| 亚洲视频资源在线| 中文字幕欧美国内| 亚洲第一页中文字幕| 在线观看区一区二| 亚洲黄页一区| 亚洲素人一区二区| 国产亚洲欧美色| 国产欧美日韩精品在线观看| 一区二区三区四区五区视频在线观看 | 日韩在线精品| 在线中文字幕网站| 日韩wumaV| av免费观看国产| 在线观看91精品国产入口| 久久99精品国产| 精品免费视频| 亚洲免费福利视频| 欧美三级日韩三级| 国产日韩中文字幕在线| av一区在线| 欧美日韩中文字幕在线视频| 91精品国产免费| 亚洲三级网站| 91av久久久| 国产欧美日韩中文久久| 欧美一级欧美三级在线观看| 欧美在线中文字幕| 中文字幕欧美日韩| 国产黄色在线| 99久久精品国产成人一区二区| 精品久久久三级| 一区二区中文字幕在线| 久久精品99国产国产精| 久精品在线观看| 国产黄在线观看免费观看不卡| 国产嫩草影院久久久久| 日韩视频免费直播| 免费网站看黄yyy222| 午夜视频在线观看一区| 日韩精品三级| 色综合久久六月婷婷中文字幕| 在线一区免费| 欧美日韩一区二区在线视频| 久草视频在线看| 欧美日韩中文字幕视频| 日韩中文在线视频| 精品播放一区二区| 91精品国产91| 国产免费电影网站入口| 不卡av免费在线| a在线观看免费视频| 不卡在线视频| 国产成人精品网址| 国产最新在线| 国产欧美日韩在线| 国产小视频免费在线观看| 精品极品三级久久久久| 国产偷国产偷亚洲清高网站| 亚洲综合日韩欧美| 日韩精品在线第一页| 欧美一级免费在线观看| 91麻豆免费视频网站| 久久久综合av| 亚洲综合日韩欧美| 日韩欧美一二三区| 日韩精品欧美| 另类专区欧美| aa国产成人| 欧美日韩性视频一区二区三区 | 一区二区日韩免费看| 欧美午夜影院在线视频| 91精品婷婷国产综合久久竹菊| 欧美在线视频一区二区| 色偷偷一区二区三区| 亚洲专区一区| 欧美日韩国产一中文字不卡| 国产高清在线视频| 中文字幕在线视频网| 伊人国产视频| 久久福利视频一区二区| 中文字幕在线观看视频www| 国产在线高清精品| 欧美日韩中文| 欧美日韩在线视频首页| 国产高清精品在线| 91精品综合久久| 欧美亚洲天堂网| 日韩精品在线播放| 中文网丁香综合网| 欧美日韩国产综合网| 欧美久久综合性欧美| 中文字幕第一页在线| 国产午夜精品一区二区三区视频| 91精品视频播放| 在线中文字幕视频| 欧美亚洲国产激情| 日韩视频精品| 在线观看区一区二| 欧美日韩国产观看视频| 精品视频www| 综合激情一区| 欧美精品一区二区三区在线播放| 欧美日韩精品中文字幕| 国产成人精品网址| 亚洲第一视频网站| 中文字幕欧美亚洲| 国产乱国产乱300精品| 国产亚洲视频中文字幕视频| 欧美三级日韩三级| 国产对白在线| 国产小视频在线观看| 国产欧美中文在线| av中文资源在线| 一区二区视频在线| 欧美一级久久久久久久久大| 免费视频国产一区| 日韩精品不卡一区二区| 色综合久久88色综合天天免费| 国产欧美日韩综合精品|