設計模式入門

本筆記內容來自於《Head First設計模式》

首先來看一個例子:
有一個鴨子超類,繼承它的鴨子會有其中的屬性:

但現在,我們要對子類的一些鴨子增加飛(fly)的功能,我們可能會想到直接在超類中添加這個方法:

 


問題在於:

這時候你可能想到繼承中的覆蓋,即不會飛的鴨子就覆蓋fly()方法,但是覆蓋後fly()方法裏什麼也不做。
但是這樣還是會出現新的問題:
             如果有些鴨子既不會呱呱叫也不會飛,那麼豈不是都要覆蓋,這樣每當新的鴨子出現就會要考慮覆蓋,簡直是無窮無盡的噩夢。

那麼,我們再來考慮第二種方法,使用接口:

然而:

從而我們可以得到第一個結論:

現在回到我們的問題本身:

我們希望一切能有彈性,比方說,我們現在要新增一種綠頭鴨,並指定特定類型的飛行行爲給它。
那 麼我們可以乾脆讓鴨子的行爲可以動態的改變好了,怎麼實現呢,使用接口

我們來看看具體行爲類接口的構造:


再來看鴨子:

其實以上所說的設計模式其實就是一種行爲型模式--策略模式


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章