1. 程式人生 > >設計模式--Template模式 VS Strategy模式

設計模式--Template模式 VS Strategy模式

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 模式