国产探花免费观看_亚洲丰满少妇自慰呻吟_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進行繼承擴展,不會牽扯到另外一邊的改動。比如我們再擴展一種筆或者一種筆的用法,直接擴展筆的種類或者用法的種類即可,這樣就達到了低耦合易擴展的目的。

應用場景

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪湖市| 河间市| 肥城市| 乌恰县| 温泉县| 舒城县| 理塘县| 永顺县| 拉萨市| 大连市| 大庆市| 阿克苏市| 涞源县| 高清| 冕宁县| 广河县| 重庆市| 瓮安县| 南昌县| 泾源县| 灌云县| 靖远县| 博罗县| 浙江省| 辉县市| 连州市| 水城县| 镇原县| 阳江市| 南溪县| 新兴县| 姜堰市| 八宿县| 安仁县| 余江县| 印江| 容城县| 苗栗市| 岳普湖县| 太仆寺旗| 栖霞市|