国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

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

2020-01-26 13:43:53
字體:
來源:轉載
供稿:網友

橋接模式屬于先天模式,這里的先天模式就是說一開始就要把結構搭建好,方便后來的擴展,而不是對已經出現的模塊和接口進行改進擴展的。橋接的核心在于實體類和操作類之間的聚合關系,這個聚合關系就是我們所說的"橋",不同于裝飾、代理和適配器模式的中的聚合關系,橋接不存在兩者之間的繼承關系,操作類是完全解耦的,而實體類對于操作類也只是弱耦合。

作用

將抽象部份與它的實現部份分離,使它們都可以獨立地變化。

類視圖

實現

//操作類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進行繼承擴展,不會牽扯到另外一邊的改動。比如我們再擴展一種筆或者一種筆的用法,直接擴展筆的種類或者用法的種類即可,這樣就達到了低耦合易擴展的目的。

應用場景

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天水市| 苍南县| 彭山县| 无锡市| 灵山县| 正安县| 马尔康县| 和硕县| 富锦市| 和硕县| 互助| 桐柏县| 怀安县| 鱼台县| 晋宁县| 津市市| 都昌县| 盱眙县| 富阳市| 建阳市| 尖扎县| 崇义县| 永平县| 厦门市| 治县。| 哈密市| 三穗县| 五峰| 织金县| 亚东县| 溆浦县| 遂川县| 龙泉市| 陵川县| 台湾省| 荥经县| 明溪县| 六盘水市| 阿拉善盟| 榆中县| 泰安市|