策略模式

什么是策略模式?為什么要使用策略?

從開始學(xué)習(xí)java編程,我們就學(xué)習(xí)了if...else...,針對(duì)不同的條件執(zhí)行不同的邏輯。對(duì)于一些簡單的邏輯還好,如果有十多種條件,寫長篇幅的if...else...就會(huì)很low,策略模式可以優(yōu)雅的替換掉大篇幅的if...else...代碼塊,針對(duì)不同的條件執(zhí)行不同的策略。

策略模式簡單實(shí)現(xiàn)

// 定義策略接口
public interface Strategy {
    /**
     * 策略方法
     */
    void method();
}



實(shí)現(xiàn)不同策略
@Service(value = "strategyA")
public class StrategyA implements Strategy {
    /**
     * 策略方法
     */
    @Override
    public void method() {
        System.out.println("我是A策略實(shí)現(xiàn)方案!");
    }
}
 
 
@Service(value = "strategyB")
public class StrategyB implements Strategy {
    /**
     * 策略方法
     */
    @Override
    public void method() {
        System.out.println("我是B策略實(shí)現(xiàn)方案!");
    }
 
@Service(value = "strategyC")
public class StrategyC implements Strategy {
    /**
     * 策略方法
     */
    @Override
    public void method() {
        System.out.println("我是C策略實(shí)現(xiàn)方案!");
    }
}


// 定義策略上下文
@Component
public class StrategyContext {
    private final Map<String, Strategy> map = new HashMap<>();

    @Resource
    private ApplicationContext context;

    @Constructor
    public void initContext() {
        Map<String, Strategy> beanMap = context.getBeansOfType(Strategy.class);
        beanMap.forEach(this.map::put);
    }

    public void invoke(String key, Object arg...) {
        pageMap.get(key).method(arg...);
    }

}


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 委派模式 1.1 委派模式的簡介 委派模式不屬于 GOF23 種設(shè)計(jì)模式中。 委派模式( Delegate ...
    AnonyStar閱讀 528評(píng)論 0 0
  • 1 介紹 Strategy模式是行為模式的一種,主要是對(duì)一系列算法的封裝,為所有算法定義一個(gè)抽象的算法接口,并通過...
    司鑫閱讀 436評(píng)論 0 2
  • 策略模式的介紹 ? 在實(shí)際開發(fā)過程中,我們常常遇到這樣的問題,實(shí)現(xiàn)某一個(gè)功能可以有多種算法或者策略,我們根據(jù)實(shí)...
    Android天之驕子閱讀 527評(píng)論 0 0
  • 策略模式 在策略模式(Strategy Pattern)中,一個(gè)類的行為或其算法可以在運(yùn)行時(shí)更改。這種類型的設(shè)計(jì)模...
    javacoo閱讀 378評(píng)論 0 1
  • 目錄 本文的結(jié)構(gòu)如下: 引言 什么是策略模式 模式的結(jié)構(gòu) 典型代碼 代碼示例 策略模式和模板方法模式的區(qū)別 優(yōu)點(diǎn)和...
    w1992wishes閱讀 961評(píng)論 1 7

友情鏈接更多精彩內(nèi)容