程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++設計模式實現--橋接(Bridge)模式

C++設計模式實現--橋接(Bridge)模式

編輯:C++入門知識

一. 舉例

N年前:

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

\

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

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

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

N年後:

Windows出現了,Linux出現了,軟件和硬件終於分離了。這時的系統比如 Windows 既能在IBM機器上運行,也能在HP機器上運行了。
<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPGltZyBzcmM9"https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017012114183455.jpg" height="150" width="438" alt="\">

這時軟件專注於軟件,硬件專注於硬件。這也是推動計算機系統不斷發展的原因(更加專注了嘛),也是推動更多公司出現的原因(成本更低了嘛)。

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

代碼實現:

[cpp] view plaincopy
  1. //操作系統
  2. class OS
  3. {
  4. public:
  5. virtual void Run() {}
  6. };
  7. //Windows
  8. class WindowOS: public OS
  9. {
  10. public:
  11. void Run() { cout<<"運行 Windows"< };
  12. //Linux
  13. class LinuxOS: public OS
  14. {
  15. public:
  16. void Run() { cout<<"運行 Linux"< };
  17. //計算機
  18. class Computer
  19. {
  20. public:
  21. virtual void InstallOS(OS *os) {}
  22. };
  23. //IBM 計算機
  24. class IBMComputer: public Computer
  25. {
  26. public:
  27. void InstallOS(OS *os) { os->Run(); }
  28. };
  29. //HP 計算機
  30. class HPComputer: public Computer
  31. {
  32. public:
  33. void InstallOS(OS *os) { os->Run(); }
  34. };
  35. int main()
  36. {
  37. OS *os1 = new WindowOS();
  38. OS *os2 = new LinuxOS();
  39. Computer *computer1 = new IBMComputer();
  40. computer1->InstallOS(os1);
  41. computer1->InstallOS(os2);
  42. return 0;
  43. }

    二. 橋接模式

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

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

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

    三. 組合、聚合復用原則

    \


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


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved