策略模式(Strategy)

2021-09-24 13:04:02 字數 969 閱讀 6871

分離演算法,選擇實現。

提供解決某一問題的演算法族,允許使用者從演算法族中任選乙個演算法解決問題,方便更換演算法或增加新演算法。客戶端決定呼叫哪個演算法。

假設場景:乙個**系統,根據不同型別的使用者及採購商品數量,給不同的折扣。

建立乙個策略介面。

public

inte***ce

strategy

不同的類實現該介面,即表示不同的策略。

public

class

newcustomerfewstrategy

implements

strategy

}public

class

newcustomermanystrategy

implements

strategy

}public

class

oldcustomerfewstrategy

implements

strategy

}

構建乙個上下文類,負責和具體的策略類互動,使演算法徹底和客戶端呼叫分離。這裡直接在**中進行策略注入,可以通過構造器或者set方法,如果用spring的依賴注入,可以通過配置檔案,動態注入不同策略物件,動態切換不同演算法。

public

class

context

//可以通過set方法注入

public

void

setstrategy

(strategy strategy)

public

void

printprice

(double s)

}

客戶端呼叫

public

class

client

}

策略 Strategy 模式

strategy 模式也叫策略模式,是由 gof提出的 23種軟體設計模式的一種。strategy 模式是行為模式之一,它對一系列的演算法加以封裝,為所有演算法定義乙個抽象的演算法介面,並通過繼承該抽象演算法介面對所有的演算法加以封裝和實現,具體的演算法選擇交由客戶端決定 策略 strategy 模...

策略模式 Strategy

public context string strategytype df對策略模式的定義是這樣的 它定義了演算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓演算法的變化不會影響到使用演算法的客戶 main函式 abstract class strategy class concretest...

策略模式 Strategy

定義 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。型別 行為類模式 結構圖 策略模式的優缺點 策略模式的主要優點有 策略模式的缺點主要有兩個 必須對客戶端 呼叫者 暴露所有的策略類,因為使用哪種策略是由客戶端來決定的,因此,客戶端應該知道有什麼策略,並且了解各種策略之間的區別,否...