最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年04月07日 12:10:20   作者:chencarl  
這篇文章主要為大家詳細介紹了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)文章

最新評論

新平| 措美县| 泰安市| 鄂托克前旗| 嘉兴市| 项城市| 大渡口区| 海林市| 文山县| 陵水| 张北县| 调兵山市| 淮滨县| 江西省| 喀喇沁旗| 庆云县| 长顺县| 霍州市| 临汾市| 通辽市| 敦煌市| 英超| 桑植县| 信阳市| 永和县| 营山县| 孟州市| 额尔古纳市| 高尔夫| 渝北区| 连山| 肥城市| 遂宁市| 延庆县| 淄博市| 泌阳县| 东海县| 会同县| 永清县| 紫金县| 南汇区|