C++設(shè)計模式之橋接模式(Bridge)
橋接模式屬于先天模式,這里的先天模式就是說一開始就要把結(jié)構(gòu)搭建好,方便后來的擴展,而不是對已經(jīng)出現(xiàn)的模塊和接口進行改進擴展的。橋接的核心在于實體類和操作類之間的聚合關(guān)系,這個聚合關(guān)系就是我們所說的"橋",不同于裝飾、代理和適配器模式的中的聚合關(guān)系,橋接不存在兩者之間的繼承關(guān)系,操作類是完全解耦的,而實體類對于操作類也只是弱耦合。
作用
將抽象部份與它的實現(xiàn)部份分離,使它們都可以獨立地變化。
類視圖

實現(xiàn)
//操作類
class action
{
public:
virtual void do()=0;
};
class write : public action
{
public:
void do(){ count << "to write\n";}
};
class draw : public action
{
public:
void do() { count << "to draw\n";}
};
class gift : public action
{
public:
void do {count << "to gift\n";}
};
//實體類
class pen
{
public:
pen(): m_pAction(NULL){}
virtual ~pen(){ delete m_pAction;}
virtual void use();
void setaction(action* pAction){m_pAction = pAction;}
protected:
action* m_pAction;
};
class pencil : public pen
{
void use()
{
cout << "use pencil ";
m_pAction.do();
}
};
class brush : public pen
{
void use()
{
cout << "use brush ";
m_pAction.do();
}
};
class goldenpen : public pen
{
void use()
{
cout << "use goldenpen ";
m_pAction.do();
}
};
int main
{
ballpen inHand;
inHand.setaction(new gift());
inHand.use();
}

上面例子簡單的說明了實體類pen和操作類action之間的橋接關(guān)系,如果需要擴展的情況下,我們可以分別對pen和action進行繼承擴展,不會牽扯到另外一邊的改動。比如我們再擴展一種筆或者一種筆的用法,直接擴展筆的種類或者用法的種類即可,這樣就達到了低耦合易擴展的目的。
應(yīng)用場景
- 當對象存在多種變化的因素時,考慮對其變化的因素和場景進行抽象,然后進行橋接;如筆擁有不同的功能。
- 當多個對象存在多種變化的因素時,考慮將這部分變化的部分抽象出來再聚合進來;比如不同品牌的電腦安裝不同的系統(tǒng)、使用不同的軟件等,相當于將第一條進行橫向擴展,增加橋接的數(shù)量。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
養(yǎng)成良好的C++編程習慣之內(nèi)存管理的應(yīng)用詳解
"養(yǎng)成良好的編程習慣"其實是相當綜合的一個命題,可以從多個角度、維度和層次進行論述和評判,如代碼的風格、效率和可讀性;模塊設(shè)計的靈活性、可擴展性和耦合度等等,要試圖把所有方面都闡述清楚必須花很多的精力,而且也不一定能闡述得全面2013-05-05
C++靜態(tài)成員變量和靜態(tài)成員函數(shù)的使用方法總結(jié)
下面小編就為大家?guī)硪黄狢++靜態(tài)成員變量和靜態(tài)成員函數(shù)的使用方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01
C語言中的abs()函數(shù)和exp()函數(shù)的用法
這篇文章主要介紹了C語言中的abs()函數(shù)和exp()函數(shù)的用法,是C語言入門學習中的基礎(chǔ)知識,需要的朋友可以參考下2015-08-08
詳解C語言中fseek函數(shù)和ftell函數(shù)的使用方法
這篇文章主要介紹了C語言中fseek函數(shù)和ftell函數(shù)的使用方法,兩個函數(shù)分別用于設(shè)置和返回文件指針stream的位置,需要的朋友可以參考下2016-03-03
C語言typedef與復(fù)雜函數(shù)聲明問題的深入解析
以下是對C語言中的typedef與復(fù)雜函數(shù)聲明問題進行了詳細的分析介紹,需要的朋友可以過來參考下2013-07-07

