1. 程式人生 > >Java 設計模式學習筆記1——策略模式(Duck例子)

Java 設計模式學習筆記1——策略模式(Duck例子)

利用 實例化 top 而是 實現 學習筆記 left ng- 多個

技術分享

0、假設現有工程(Duck)中遇到為類添加功能的問題,如何設計類添加新的功能?

1、利用繼承提供的Duck(鴨子)的行為會導致哪些缺點?

(1)代碼在多個子類中重復

(2)很多男知道所有鴨子的全部行為

(3)運行時的行為不容易改變

(4)改變會牽一發動全身,造成其他鴨子的不想要的改變

【設計原則】

找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需呀變化的代碼混在一起

2、分開變化與不會變化的部分

將Duck分成兩部分,鴨子類和鴨子行為。

類的固有屬性和共用的方法寫在類中,行為另起一個類(這裏說的類也可能是接口)

3、設計行為

鴨子類實現類中實現設計接口的方法,這樣就可以在運行時動態第加載行為方法。

【設計原則】

針對接口編程,而不是針對實現編程

“針對接口編程”,關鍵就是利用多態編程。通過多態編程,子類實例化的動作不在需要在代碼中硬編碼,而是在運行時才指定具體的思想對象。

4、整合鴨子行為

技術分享

技術分享

技術分享

5、封裝行為大局觀,如下圖:

技術分享

【設計原則】

多用組合,少用繼承。

Java 設計模式學習筆記1——策略模式(Duck例子)