[大話設計模式] 重點筆記:橋接模式 (Bridge)

  • 3511
  • 0

[大話設計模式] 重點筆記:橋接模式 (Bridge)

[Ch.22]

原文定義:

Decouple an abstraction from its implementation so that the two can vary independently.

UML圖: p.337或參考這裡

重點心得:

這個模式號稱是軟體設計模式最複雜的模式之一。
光從字面的定義,我想應該是很難理解的。
看書中的解釋:「系統可能有多角度分類,每一種分類都有可能變化...」
這個「多角度」可能還是有點難理解,我把他理解為數學上的「多維度」,
或是直接用書中的「手機品牌與手機軟體」例子理解,可能比較容易體會。

只要多一個手機品牌,就需要特地為這個品牌多設計一整組手機軟體的類別。
只要多一種手機軟體,就要為每一個手機品牌都製作一個客製的版本。

這是因為過度使用繼承關係,導致限制了靈活性與複用性。
這時就可以運用合成/聚合複用原則(CARP),從繼承關係這種強耦合的設計改為弱耦合的設計。讓兩組類別能夠各自獨立變化。

注意圖中的RefinedAbstraction雖然有個Abstract,但並非抽象類別。然後再將Abstraction/Implementor對照例子中的HandsetBrand/HandsetSoft再看一次應該就大約能領悟了。

結論:在分析系統時,發現兩個以上非常強的變化維度,就適合使用橋接模式(但若其中某些維度變化不強烈時,也不一定非使用橋接模式不可)。

參考資料:

http://www.dofactory.com/Patterns/PatternBridge.aspx
http://zh.wikipedia.org/wiki/%E6%A9%8B%E6%8E%A5%E6%A8%A1%E5%BC%8F
http://www.cnblogs.com/kid-li/archive/2006/05/31/413630.html
http://terrylee.cnblogs.com/archive/2006/02/24/336652.html