策略 (Strategy) 模式:定義一系列的算法 , 把它們一個個封裝起來 , 并且使它們可相互替換。本模式使得算法可獨立于使用它的客戶而變化。

適用性:

  • 許多相關的類僅僅是行為有異。策略提供了一種用多個行為中的一個行為來配置一個類的方法。
  • 需要使用一個算法的不同變體。例如,你可能會定義一些反映不同的空間/時間權衡的算法。當這些變體實現為一個算法的類層次時,可以使用策略模式。
  • 算法使用客戶不應該知道的數據。可使用策略模式以避免暴露復雜的、與算法相關的數據結構。
  • 一個類定義了多種行為, 并且這些行為在這個類的操作中以多個條件語句的形式出現。將相關的條件分支移入它們各自的Strategy類中以代替這些條件語句。


state.bmp
Java中的很多類庫都用到本模式,例子就不舉了.



參考資料:《設計模式速查手冊》