設計模式C++描述—-09.橋接(Bridge)模式 .

來源:互聯網
上載者:User

一. 舉例

N年前:

電腦最先出來時,軟體和硬體是一綁在一起的,比如IBM出了一台電腦,上面有一個定製的系統,假如叫 IBM_Win,這個IBM_Win系統當然不能在HP電腦上運行,同樣HP出的HP_Win系統也不能運行在IBM上。

這時如果有一家新公司Apple出了一台新電腦,那麼這個公司也要開發自己的系統 Apple_Win,Apple_Linux。

其實,上面幾家公司開發的軟體和硬體在很多地方都有相似之處,如果每家公司都做自己的系統,這意味著資源和人員的極大浪費。

這時,無論出現新的系統,還是出現新的公司,對這種設計模式的修改都是很大的。

N年後:

Windows出現了,Linux出現了,軟體和硬體終於分離了。這時的系統比如 Windows 既能在IBM機器上運行,也能在HP機器上運行了。

這時軟體專註於軟體,硬體專註於硬體。這也是推動電腦系統不斷髮展的原因(更加專註了嘛),也是推動更多公司出現的原因(成本更低了嘛)。

不管是出現了新硬體平台,還是出現新的OS,大家都能專註於自己領域。也就是外界的變化很大,但對這種模式衝擊卻很小。

//作業系統class OS  {  public:      virtual void Run() {}  };//Windowsclass WindowOS: public OS  {public:    void Run() { cout<<"運行 Windows"<<endl; }   };//Linuxclass LinuxOS: public OS  {public:    void Run() { cout<<"運行 Linux"<<endl; }   };//電腦class Computer  {public:    virtual void InstallOS(OS *os) {}  };//IBM 電腦class IBMComputer: public Computer  {public:    void InstallOS(OS *os) { os->Run(); }  };//HP 電腦class HPComputer: public Computer  {public:    void InstallOS(OS *os) { os->Run(); }  };  int main()  {      OS *os1 = new WindowOS();    OS *os2 = new LinuxOS();        Computer *computer1 = new IBMComputer();    computer1->InstallOS(os1);    computer1->InstallOS(os2);    return 0;}

 

二. 橋接模式

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

換句話出,就是要把實現獨立出來,讓它們各自變化,而不會影響其它實現,這樣可以降低耦合性。

為什麼叫Bridge 模式,從中可以看出,它像一座橋,橋兩邊的系統相對獨立,左邊是抽象部分,右邊是實現部分。

三. 組合、彙總複用原則

由上面兩個種結構圖的對比,我們可以引出一個原則:盡量使用組合、彙總,盡量不要使用類繼承。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.