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

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

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

2020-05-23 13:35:02
字體:
來源:轉載
供稿:網友

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

作用

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

類視圖

C++,設計模式,橋接模式

實現

//操作類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();}

C++,設計模式,橋接模式

上面例子簡單的說明了實體類pen和操作類action之間的橋接關系,如果需要擴展的情況下,我們可以分別對pen和action進行繼承擴展,不會牽扯到另外一邊的改動。比如我們再擴展一種筆或者一種筆的用法,直接擴展筆的種類或者用法的種類即可,這樣就達到了低耦合易擴展的目的。

應用場景

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

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江口县| 中方县| 五大连池市| 防城港市| 凭祥市| 德清县| 苗栗市| 札达县| 浙江省| 蒙山县| 大化| 桓仁| 体育| 胶州市| 临西县| 且末县| 武宣县| 左权县| 双桥区| 克什克腾旗| 长岭县| 安福县| 绵竹市| 乾安县| 钟山县| 房产| 永泰县| 清徐县| 泸州市| 卫辉市| 施甸县| 东安县| 汶上县| 霍州市| 麦盖提县| 济源市| 彭州市| 马关县| 右玉县| 长泰县| 焦作市|