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