在策略模式(Strategy Pattern)中,一個類的行為或其算法可以在運行時更改。這種類型的設計模式屬于行為型模式。
在策略模式中,我們創(chuàng)建表示各種策略的對象和一個行為隨著策略對象改變而改變的 context 對象。策略對象改變 context 對象的執(zhí)行算法。
定義一系列的算法,把它們一個個封裝起來, 并且使它們可相互替換。在有多種算法相似的情況下,使用 if...else 所帶來的復雜和難以維護。
結構圖
角色與理解
- 策略模式共分為三種角色:
- Context(上下文環(huán)境):持有抽象策略類,調用策略方法。
- Strategy(抽象策略類):聲明策略方法。
- Concrete Strategy(具體策略類):實現(xiàn)策略方法。
- Context持有State的引用,完成對ConcreteStrategy中策略方法的調用
核心代碼
- 抽象策略類
public interface Strategy {
void doSomething();
}
- 真實策略類
public class ConcreteStrategyA implements Strategy {
@Override
public void doSomething() {
System.out.println("AAA");
}
}
public class ConcreteStrategyB implements Strategy {
@Override
public void doSomething() {
System.out.println("BBB");
}
}
- 客戶端
public class Client {
public static void main(String[] args) {
Strategy strategy = new ConcreteStrategyA();
strategy.doSomething();
strategy = new ConcreteStrategyB();
strategy.doSomething();
}
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
算法
+關注
關注
23文章
4701瀏覽量
94876 -
State
+關注
關注
0文章
5瀏覽量
7802
發(fā)布評論請先 登錄
相關推薦
熱點推薦
基于入侵行為模式的告警關聯(lián)
本文提出了一種基于入侵行為模式的告警關聯(lián)方式。入侵行為模式是定義在時間基礎上的一組謂詞公式,其實質是通過時間限制聯(lián)系在一起的入侵事件的集合。該方法在對大量告
發(fā)表于 08-13 08:35
?6次下載
基于訪存行為感知的存儲調度策略
隨著通用圖形處理器在高性能計算領域的廣泛應用,新的并行執(zhí)行模式被提出。在新模式下,當前的存儲調度策略未能使存儲器的吞吐率達到最大。分析了圖形處理器上多程序并行執(zhí)行模式下應用程序訪存
發(fā)表于 11-20 14:23
?13次下載

設計模式最佳實踐探索—策略模式
根據(jù)不同的應用場景與意圖,設計模式主要分為創(chuàng)建型模式、結構型模式和行為型模式三類。本文主要探索行為
設計模式:備忘錄設計模式
備忘錄設計模式(Memento Design Pattern)是一種行為型設計模式,它的主要目的是在不破壞對象封裝性的前提下,捕捉和保存一個對象的內部狀態(tài)
設計模式行為型:觀察者模式
定義對象之間的一種一對多依賴關系,使得每一個對象發(fā)生狀態(tài)的變化時,其相關依賴對象皆得到通知并被自動更新,又稱為發(fā)布-訂閱模式、模型-視圖模式、源-監(jiān)聽器模式或從屬者模式。

什么是策略模式
不同的場景,使用不同的策略進行處理。 優(yōu)點 算法可以自由切換。 避免使用多重條件判斷。 擴展性良好。 缺點 策略類會增多。 所有策略類都需要對外暴露。 使用場景 如果在一個系統(tǒng)里面有許多類,它們之間的區(qū)別僅在于它們的

設計模式-策略模式
,不會影響到使用算法的客戶。策略模式屬性行為模式。 二、實際應用 業(yè)務場景:業(yè)務需要監(jiān)聽多種消息,將接收到的消息更新到同一個ES中,不同的消息類型使用不同的

評論