這倆個模式結合簡單說下優缺點,主要還是結合代碼一起分析,很容易學會,策略模式是一種定義算法的模式,主要是以相同的方式調用所有的算法,減少了各種算法的耦合,另外一個是可以單獨測某個算法,避免出現整體失誤。
先給大家看一段代碼,這是簡單工廠模式下實現簡單收銀系統
按三步曲來,先定義工廠類
再抽出超類
這個地方給大家解釋下爲什麼要用抽象類和抽象方法,其實用實體類和實體方法也可以實現,不過這裏要考慮,如果類裏面方法較多的情況下,容易遺忘去重寫某些方法,這裏主要是起了一個提示作用。
最後一個是算法類,其實這裏面父類就是算法類,所有子類重寫算法,子類就是算法類,這是其中一個算法子類
客戶端代碼就如下所示
功能到這裏我們算是已經完成了,不過眼尖的會發現,工廠類使用了switch case語句,這樣的話,每次都要從上到下判斷一次,不符合我們優化代碼效率的目的,當你的父類是算法類父類的時候,你就應該考慮使用策略模式,這個模式就是爲了這種情況下研究出來的,接下來我們看看策略模式結合反射,其他類不變,我們不要工廠類,換成新的策略類
我們在客戶端使用反射模式去調用你想要的那個類和方法,這樣一來,就做到了完全分離,你再加個算法類的話,只要加個子類和方法就可以了,做到了真正的低耦合,這種就是代碼的優化了!