一. 舉例
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
二. 橋接模式
定義:將抽象部分與它的實現部分分離,使它們都可以獨立地變化。
換句話出,就是要把實現獨立出來,讓它們各自變化,而不會影響其它實現,這樣可以降低耦合性。
為什麼叫Bridge 模式,從上圖中可以看出,它像一座橋,橋兩邊的系統相對獨立,左邊是抽象部分,右邊是實現部分。
三. 組合、聚合復用原則
由上面兩個種結構圖的對比,我們可以引出一個原則:盡量使用組合、聚合,盡量不要使用類繼承。