設計模式--Template模式 VS Strategy模式
阿新 • • 發佈:2019-02-10
Template 模式和Strategy模式所要解決的問題類似,而且通常可以互換使用。
Template模式使用繼承來解決問題。
Strategy模式使用委託來解決問題。
如圖1:template 模式:基類 BubbleSorter實現了通用演算法sort, IntBubble Sorter和Double Sorter 子類繼承了父類的演算法sort,分別實現子類特有的outOforder和swap方法。
如圖2:Strategy模式:新建BubbleSorter,實現sort演算法,同時SortHandle定義為一個介面類,使得IntBubble Sorter和DoubleBubble Sorter子類不依賴於BubbleSorter類。
所以可以在BubbleSorter之外如QuickBubbleSorter來使用IntSortHandle。
如果BubbleSorter中Sort演算法是穩定的 ,則不需要抽象出SortHandle介面,使用Strategy 模式,反之,則用Strategy模式會更加靈活和可擴充套件。
圖1Bubble Sorter的 template 模式
圖2 Bubble Sorter 的strategy 模式
圖3 和圖4 是兩外兩個template模式和strategy模式的例子
圖3 template 模式
圖4 Strategy 模式