1. 程式人生 > >Strategy策略模式和State/Bridge模式的區別

Strategy策略模式和State/Bridge模式的區別

Strategy策略模式:義一系列的演算法,把每一個演算法封裝起來, 並且使它們可相互替換。本模式使得演算法可獨立於使用它的客戶而變化。也稱為政策模式(Policy)

Strategy模式UML:


如果系統中某個類的某一行為存在多種實現方式,而且這些實現方式可以互換時使用策略模式,是演算法一個維度的抽象。

如果系統中某個類的物件存在多種狀態,不同狀態下行為有差異,而且這些狀態之間可以發生轉換時使用狀態模式。

Bridge模式是兩個維度的抽象,實現基類子類邏輯實現,通過抽象介面組合關聯實現基類,在兩個模組子類間進行橋接搭配統一介面。而Strategy模式呼叫方式沒有抽象介面的,Strategy是一個維度的抽象。


當存在以下情況時使用Strategy模式
1)• 許多相關的類僅僅是行為有異。 “策略”提供了一種用多個行為中的一個行為來配置一個類的方法。即一個系統需要動態地在幾種演算法中選擇一種。
2)• 需要使用一個演算法的不同變體。例如,你可能會定義一些反映不同的空間 /時間權衡的演算法。當這些變體實現為一個演算法的類層次時 ,可以使用策略模式。
3)• 演算法使用客戶不應該知道的資料。可使用策略模式以避免暴露覆雜的、與演算法相關的資料結構。

4)• 一個類定義了多種行為 , 並且這些行為在這個類的操作中以多個條件語句的形式出現。將相關的條件分支移入它們各自的Strategy類中以代替這些條件語句。

具體見:

http://blog.csdn.net/hguisu/article/details/7529194