天天看點

設計模式 -- 政策模式

2015年12月10日21:54:25

完成一個功能可能會有好幾種算法或者方法來實作,通過對算法和方法的抽象,提供統一接口,不通算法,實作方式為實作類,通過注入不同的實作對象來實作算法,實作方式的靈活切換即為政策模式。

政策模式是針對多種選擇的代碼片段的優化,是的代碼減少修改,符合開閉原則。

編碼實作就是先将各個算法或者實作方式抽象成一個接口,接口裡面是所有實作方式的抽象方法。

每增加一種實作方式或者算法實作,就增加一個類實作該接口,并實作裡面的抽象方法。

最後通過傳入不同類的對象來實作不同算法或者實作方式的靈活切換。

優點:邏輯直覺,易于擴充。

缺點:每增加一個算法或者實作方式都要實作一個類。類檔案會顯著增加

感覺設計模式其實就講的是一種技巧或者寫好的代碼的捷徑。單同時也是犧牲了一部分的,比如類的數量變大了,單卻更好的,更優雅的實作比較好的代碼。

政策在重構代碼中的考量,比如類似 if lese , switch case 這類語句,如果判斷很多,其實可以通過政策模式來重構這部分的代碼,不至于一大坨,又一大坨的代碼塊。通過多個實作類的方式,靈活在多種算法,實作方式之間切換。

 下面是個減加乘的例子:

首先抽象計算的接口:

然後分别是實作類:

相加:

相減:

相乘:

工廠類:

測試類:

運作結果:

繼續閱讀