要想正確理解設計模式,首先必須明確它是為了解決什么問題而提出來的。
設計模式學習筆記
——Shulin
轉載請注明出處:http://blog.csdn.net/zhshulin
橋接模式的定義:"將抽象部分與實現部分分離,使它們都可以獨立的變化"。
橋接模式是所有面向對象模式的基礎,通過對橋接模式的學習來理解設計模式的思想。理由如下:
1、它教導如何思考抽象,這是面向對象設計模式的關鍵概念。
2、它實現了基本的OOD原則。
3、它容易理解。
4、如果正確理解該模式,學習其他模式會很容易。
假設以下場景:
我們房間里有些電器(電燈,風扇等)。這些設備按照某些方式布局,并由開關控制。任何時候你都能替換或排查一個電器而不用碰到其他東西。例如,你可以換一個電燈而不需要換開關。同樣,你可以換一個開關或排查它而不需要碰到或替換相應的電燈或風扇;甚至你可以用把電燈連接到風扇的開關上,把風扇連到電燈的開關上,而不需要碰到開關。
當不同東西聯系在一起時,它們應該按照一定方式聯系:修改或替換一個系統時不會影響到另一個,或者說即便有,也應該最小化。這能夠讓你的系統易于管理,且成本低。
把電燈/風扇和開關聯系到一起的是電線和電器布局。我們可以它們看做不同系統間相互聯系的橋梁。其基本的思想是,一個事物不能和另一外一個事物直接聯系。它們應當通過某些橋梁或接口聯系在一起。用軟件術語來說,這叫“松耦合”。
例子中我們有開關,可能有幾種開關,如普通的開關,漂亮的開關,但通常來說它們還是開關,并且每種開關都能夠打開和關閉。
所以下面我們會有一個開關的父類Switch:
[java] view plain copy PRint?public class Switch { public void On() { } public void Off(){ } }
接下來我們會有其他的具體的開關來繼承這個父類,他們都各自有自己的特征和行為,當然最基本的就是開、關,如:
[java] view%20plain copy print?public class FancySwitch extends Switch { public void on(){ System.out.println("打開開關!!!!"); } public void off(){ System.out.println("關閉開關!!!!"); } } [java] view%20plain copy print?
public class NormalSwitch extends Switch { public void on(){ System.out.println("打開開關!!!!"); } public void off(){ System.out.println("關閉開關!!!!"); } }
對于電燈和電扇等具體的電器,根據OODP的開放閉合原則,我們知道只要可能,就應該嘗試抽象
新聞熱點
疑難解答