天天看點

模闆方法模式與政策模式的差別

原文:http://www.tuicool.com/articles/6JBN7z3

如果你還不了解模闆方法模式和政策模式,請先閱讀《 政策模式(strategy)》和《模闆方法模式》

模闆方法模式的主要思想:定義一個算法流程,将一些特定步驟的具體實作、延遲到子類。使得可以在不改變算法流程的情況下,通過不同的子類、來實作“定制”流程中的特定的步驟。

政策模式的主要思想:使不同的算法可以被互相替換,而不影響用戶端的使用。

在思想和意圖上看,模闆方法更加強調:

1)定義一條線(算法流程),線上的多個點是可以變化的(具體實作在子類中完成),線上的多個點一定是會被執行的,并且一定是按照特定流程被執行的。

2)算法流程隻有唯一的入口,對于點的通路是受限的【通常用受保護的虛函數來定義可變點】。

政策模式更注重于: 一個“政策”是一個 整體的(完整的) 算法,算法是可以被整體替換的。而模闆方法隻能被替換其中的特定點,算法流程是固定不可變的。

在這樣的細節上看來,模闆方法 和 一組政策模式 是不可以劃等号的。

在這闆方法面前,似乎 “優先使用對象組合,而不是繼承” 的政策模式 很是趾高氣昂?我個人還是覺得、各有優缺,隻是各自适應的場景不一樣而已。當遇到“多個變化點獨立變化”時,這時就需要政策模式來救場了,如若不然,原有架構可以很好地進行維護和擴充,那還有必要去大動幹戈、非要去找到那個暫時最完美的答案嗎?似乎沒有吧。

附參考資料《設計模式精解》

模闆方法模式與政策模式的差別
模闆方法模式與政策模式的差別
模闆方法模式與政策模式的差別

https://blog.csdn.net/hudashi/article/details/50978969

繼續閱讀