定義:定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。
型別:行為類模式
類圖:
策略模式是對演算法的封裝,把一系列的演算法分別封裝到對應的類中,並且這些類實現相同的介面,相互之間可以替換。在前面說過的行為類模式中,有一種模式也是關注對演算法的封裝——模版方法模式。
對照類圖可以看到,策略模式與模版方法模式的區別僅僅是多了乙個單獨的封裝類context,它與模版方法模式的區別在於:在模版方法模式中,呼叫演算法的主體在抽象的父類中,而在策略模式中,呼叫演算法的主體則是封裝到了封裝類context中,抽象策略strategy一般是乙個介面,目的只是為了定義規範,裡面一般不包含邏輯。
其實,這只是通用實現,而在實際程式設計中,因為各個具體策略實現類之間難免存在一些相同的邏輯,為了避免重複的**,我們常常使用抽象類來擔任strategy的角色,在裡面封裝公共的**,因此,在很多應用的場景中,在策略模式中一般會看到模版方法模式的影子。
策略模式的結構
策略模式**實現
inte***ce
istrategy
class
concretestrategy1
implements
istrategy
} class
concretestrategy2
implements
istrategy
} class
context
public
void
execute()
} public
class
client
}
策略模式的優缺點策略模式的主要優點有:
策略模式的缺點主要有兩個:
適用場景
做物件導向設計的,對策略模式一定很熟悉,因為它實質上就是物件導向中的繼承和多型,在看完策略模式的通用**後,我想,即使之前從來沒有聽說過策略模式,在開發過程中也一定使用過它吧?至少在在以下兩種情況下,大家可以考慮使用策略模式:
策略模式是一種簡單常用的模式,我們在進行開發的時候,會經常有意無意地使用它,一般來說,策略模式不會單獨使用,跟模版方法模式、工廠模式等混合使用的情況比較多。
暇之餘鞏固一下自己的知識體系 ,擴充一下自己的知識面。快利用瑣碎時間給自己充電吧 !
23種設計模式 委派模式 策略模式
精簡程式邏輯,便於閱讀 其基本作用是負責任務的排程和分配任務,和 模式很像,可以看做是一種特殊情況下的靜態 的全權 但是 模式注重過程,但是委派模式注重結果。是一種行為型模式。一般delegate,dispatcher結尾的都是委派 老闆叫經理幹活,經理通過不同的內容叫不同的員工去做事情 首先定義介...
23種設計模式之策略模式
定義 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。型別 行為類模式 類圖 策略模式是對演算法的封裝,把一系列的演算法分別封裝到對應的類中,並且這些類實現相同的介面,相互之間可以替換。在前面說過的行為類模式中,有一種模式也是關注對演算法的封裝 模版方法模式,對照類圖可以看到,策略模...
23種設計模式之 策略模式
策略模式也叫政策模式,它是將定義的演算法家族,分別封裝起來,讓他們之間可以相互替換,從而讓演算法的變化不會影響到使用演算法的使用者。public inte ce strategy public class contentstrategya implements strategy public cla...