欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2018年04月07日 12:10:20   作者:chencarl  
這篇文章主要為大家詳細(xì)介紹了C++設(shè)計(jì)模式之橋接模式Bridge,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

橋接模式屬于先天模式,這里的先天模式就是說(shuō)一開始就要把結(jié)構(gòu)搭建好,方便后來(lái)的擴(kuò)展,而不是對(duì)已經(jīng)出現(xiàn)的模塊和接口進(jìn)行改進(jìn)擴(kuò)展的。橋接的核心在于實(shí)體類和操作類之間的聚合關(guān)系,這個(gè)聚合關(guān)系就是我們所說(shuō)的"橋",不同于裝飾、代理和適配器模式的中的聚合關(guān)系,橋接不存在兩者之間的繼承關(guān)系,操作類是完全解耦的,而實(shí)體類對(duì)于操作類也只是弱耦合。

作用

將抽象部份與它的實(shí)現(xiàn)部份分離,使它們都可以獨(dú)立地變化。

類視圖

實(shí)現(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";}
};

//實(shí)體類
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();
}

上面例子簡(jiǎn)單的說(shuō)明了實(shí)體類pen和操作類action之間的橋接關(guān)系,如果需要擴(kuò)展的情況下,我們可以分別對(duì)pen和action進(jìn)行繼承擴(kuò)展,不會(huì)牽扯到另外一邊的改動(dòng)。比如我們?cè)贁U(kuò)展一種筆或者一種筆的用法,直接擴(kuò)展筆的種類或者用法的種類即可,這樣就達(dá)到了低耦合易擴(kuò)展的目的。

應(yīng)用場(chǎng)景

  • 當(dāng)對(duì)象存在多種變化的因素時(shí),考慮對(duì)其變化的因素和場(chǎng)景進(jìn)行抽象,然后進(jìn)行橋接;如筆擁有不同的功能。
  • 當(dāng)多個(gè)對(duì)象存在多種變化的因素時(shí),考慮將這部分變化的部分抽象出來(lái)再聚合進(jìn)來(lái);比如不同品牌的電腦安裝不同的系統(tǒng)、使用不同的軟件等,相當(dāng)于將第一條進(jìn)行橫向擴(kuò)展,增加橋接的數(shù)量。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++ ffmpeg硬件解碼的實(shí)現(xiàn)方法

    C++ ffmpeg硬件解碼的實(shí)現(xiàn)方法

    這篇文章主要介紹了C++ ffmpeg硬件解碼的實(shí)現(xiàn),對(duì)FFmpeg多媒體解決方案中的視頻編解碼流程進(jìn)行研究。為嵌入式多媒體開發(fā)提供參考,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 頭文件不宜定義變量的原因全面解析

    頭文件不宜定義變量的原因全面解析

    以下是對(duì)頭文件不宜定義變量的原因進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來(lái)參考下
    2013-09-09
  • 基于C++ list中erase與remove函數(shù)的使用詳解

    基于C++ list中erase與remove函數(shù)的使用詳解

    本篇文章是對(duì)C++ list中erase與remove函數(shù)的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 顯示任何進(jìn)程加載的DLL文件的代碼

    顯示任何進(jìn)程加載的DLL文件的代碼

    c語(yǔ)言實(shí)現(xiàn)的顯示任何進(jìn)程加載的DLL,方便開發(fā)軟件的朋友
    2013-05-05
  • C++文件IO流及stringstream流讀寫文件和字符串操作詳解

    C++文件IO流及stringstream流讀寫文件和字符串操作詳解

    本文詳細(xì)介紹C++中的文件IO流和stringstream流的使用方法,包括文件的打開、讀寫操作,以及字符串的輸入輸出、轉(zhuǎn)換等操作。同時(shí)提供實(shí)用的示例代碼和技巧,幫助讀者更好地掌握這兩種流的使用
    2023-04-04
  • 一文詳解Qt中線程的實(shí)際應(yīng)用

    一文詳解Qt中線程的實(shí)際應(yīng)用

    為了讓程序盡快響應(yīng)用戶操作,在開發(fā)應(yīng)用程序時(shí)經(jīng)常會(huì)使用到線程。這篇文章就來(lái)和大家介紹一下Qt中線程的實(shí)際應(yīng)用,感興趣的小伙伴可以了解一下
    2023-03-03
  • C++實(shí)現(xiàn)掃雷經(jīng)典小游戲

    C++實(shí)現(xiàn)掃雷經(jīng)典小游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)掃雷經(jīng)典小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C語(yǔ)言中函數(shù)的聲明、定義及使用的入門教程

    C語(yǔ)言中函數(shù)的聲明、定義及使用的入門教程

    這篇文章主要介紹了C語(yǔ)言中函數(shù)的聲明、定義及使用的入門教程,重點(diǎn)講述了main函數(shù)的相關(guān)知識(shí),需要的朋友可以參考下
    2015-12-12
  • C++表達(dá)式new與delete知識(shí)詳解

    C++表達(dá)式new與delete知識(shí)詳解

    這篇文章主要為大家詳細(xì)介紹了C++表達(dá)式new與delete知識(shí)點(diǎn),學(xué)習(xí)如何動(dòng)態(tài)創(chuàng)建對(duì)象,動(dòng)態(tài)創(chuàng)建的對(duì)象與一般對(duì)象的區(qū)別,動(dòng)態(tài)創(chuàng)建的對(duì)象的初始化以及釋放動(dòng)態(tài)分配的內(nèi)存等知識(shí)點(diǎn),感興趣的朋友可以參考一下
    2016-05-05
  • C++中的friend友元函數(shù)詳細(xì)解析

    C++中的friend友元函數(shù)詳細(xì)解析

    友元可以是一個(gè)函數(shù),該函數(shù)被稱為友元函數(shù);友元也可以是一個(gè)類,該類被稱為友元類。友元函數(shù)的特點(diǎn)是能夠訪問類中的私有成員的非成員函數(shù)。友元函數(shù)從語(yǔ)法上看,它與普通函數(shù)一樣,即在定義上和調(diào)用上與普通函數(shù)一樣
    2013-09-09

最新評(píng)論