亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++設計模式之橋接模式(Bridge)

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

橋接模式屬于先天模式,這里的先天模式就是說一開始就要把結構搭建好,方便后來的擴展,而不是對已經(jīng)出現(xià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之間的橋接關系,如果需要擴展的情況下,我們可以分別對pen和action進行繼承擴展,不會牽扯到另外一邊的改動。比如我們再擴展一種筆或者一種筆的用法,直接擴展筆的種類或者用法的種類即可,這樣就達到了低耦合易擴展的目的。

應用場景

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

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

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

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

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

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

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

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

    顯示任何進程加載的DLL文件的代碼

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

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

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

    一文詳解Qt中線程的實際應用

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

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

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

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

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

    C++表達式new與delete知識詳解

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

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

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

最新評論