国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

策略模式(Strategy Pattern)

這篇具有很好參考價(jià)值的文章主要介紹了策略模式(Strategy Pattern)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

策略模式

一、介紹

??在策略模式(Strategy Pattern)中,一個(gè)類的行為或其算法可以在運(yùn)行時(shí)更改。這種類型的設(shè)計(jì)模式屬于行為型模式。

  • 意圖:定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái), 并且使它們可相互替換。
  • 主要解決:在有多種算法相似的情況下,使用 if...else 所帶來(lái)的復(fù)雜和難以維護(hù)。
  • 何時(shí)使用:一個(gè)系統(tǒng)有許多許多類,而區(qū)分它們的只是他們直接的行為。
  • 如何解決:將這些算法封裝成一個(gè)一個(gè)的類,任意地替換。
  • 關(guān)鍵代碼:實(shí)現(xiàn)同一個(gè)接口。

二、優(yōu)缺點(diǎn)

2.1 優(yōu)點(diǎn)

  1. 算法可以自由切換。
  2. 避免使用多重條件判斷。
  3. 擴(kuò)展性良好。

2.2 缺點(diǎn)

  1. 策略類會(huì)增多。
  2. 所有策略類都需要對(duì)外暴露。

三、使用場(chǎng)景

  1. 如果在一個(gè)系統(tǒng)里面有許多類,它們之間的區(qū)別僅在于它們的行為,那么使用策略模式可以動(dòng)態(tài)地讓一個(gè)對(duì)象在許多行為中選擇一種行為。
  2. 一個(gè)系統(tǒng)需要?jiǎng)討B(tài)地在幾種算法中選擇一種。
  3. 如果一個(gè)對(duì)象有很多的行為,如果不用恰當(dāng)?shù)哪J?,這些行為就只好使用多重的條件選擇語(yǔ)句來(lái)實(shí)現(xiàn)。

注意事項(xiàng):如果一個(gè)系統(tǒng)的策略多于四個(gè),就需要考慮使用混合模式,解決策略類膨脹的問(wèn)題。

四、具體實(shí)現(xiàn)

策略模式(Strategy Pattern)

1、創(chuàng)建一個(gè)接口

/**
 * 策略模式接口
 *
 * @author zt1994 2021/4/3 17:39
 */
public interface Strategy {

    /**
     * 操作
     *
     * @param num1
     * @param num2
     * @return
     */
    int doOperation(int num1, int num2);
}

2、創(chuàng)建實(shí)現(xiàn)接口的實(shí)體類

/**
 * 加法實(shí)現(xiàn)類
 *
 * @author zt1994 2021/4/3 17:42
 */
public class OperationAdd implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        return num1 + num2;
    }
}

/**
 * 減法實(shí)現(xiàn)類
 *
 * @author zt1994 2021/4/3 17:43
 */
public class OperationSubtract implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        return num1 - num2;
    }
}

/**
 * 乘法實(shí)現(xiàn)類
 *
 * @author zt1994 2021/4/3 17:44
 */
public class OperationMultiply implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        return num1 * num2;
    }
}

3、創(chuàng)建 Context 類

/**
 * context
 *
 * @author zt1994 2021/4/3 17:44
 */
public class Context {

    private Strategy strategy;

    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    public int executeStrategy(int num1, int num2) {
        return strategy.doOperation(num1, num2);
    }
}

4、使用 Context 來(lái)查看當(dāng)它改變策略 Strategy 時(shí)的行為變化

/**
 * 策略模式測(cè)試類
 *
 * @author zt1994 2021/4/3 17:45
 */
public class StrategyPatternTest {

    public static void main(String[] args) {
        Context context = new Context(new OperationAdd());
        System.out.println("10 + 5 = " + context.executeStrategy(10, 5));

        context = new Context(new OperationSubtract());
        System.out.println("10 - 5 = " + context.executeStrategy(10, 5));

        context = new Context(new OperationMultiply());
        System.out.println("10 * 5 = " + context.executeStrategy(10, 5));
    }
}

5、測(cè)試結(jié)果文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-448275.html

10 + 5 = 15
10 - 5 = 5
10 * 5 = 50

到了這里,關(guān)于策略模式(Strategy Pattern)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 設(shè)計(jì)模式-策略模式 Strategy

    該模式最常見的應(yīng)用場(chǎng)景是,利用它來(lái)避免冗長(zhǎng)的 if-else 或 switch 分支判斷。不過(guò),它的作用還不止如此。它也可以像模板模式那樣,提供框架的擴(kuò)展點(diǎn)等等。 策略模式,英文全稱是 Strategy Design Pattern。該模式是這樣定義的: Define a family of algorithms, encapsulate each one, and make

    2024年02月20日
    瀏覽(24)
  • 策略模式(Strategy)

    策略模式(Strategy)

    策略 是一種行為設(shè)計(jì)模式,它能讓你定義一系列算法,并將 每種算法分別放入獨(dú)立的類中,以使算法的對(duì)象能夠相互替換。 1. 問(wèn)題 你打算為游客們創(chuàng)建一款導(dǎo)游程序。該程序的核心功能是提供美觀的地圖,以幫助用戶在任何城市中快速定位。 用戶期待的程序新功能是自動(dòng)

    2024年02月12日
    瀏覽(19)
  • 策略模式(Strategy)

    策略模式(Strategy)

    策略模式是一種行為設(shè)計(jì)模式,就是定義一系列算法,然后 將每一個(gè)算法封裝起來(lái) ,并使它們 可相互替換 。本模式通過(guò)定義一組可相互替換的算法,實(shí)現(xiàn)將算法獨(dú)立于使用它的用戶而變化。 為實(shí)現(xiàn)一系列可相互替換的算法,可定義一個(gè)公共接口,然后定義一組實(shí)現(xiàn)該接口

    2024年02月14日
    瀏覽(24)
  • 策略模式Strategy

    策略模式Strategy

    2024年02月12日
    瀏覽(19)
  • 蝦皮一面:手寫一個(gè)Strategy模式(策略模式)

    蝦皮一面:手寫一個(gè)Strategy模式(策略模式)

    在40歲老架構(gòu)師 尼恩的 讀者交流區(qū) (50+)中,最近有指導(dǎo)一個(gè)小伙伴面試架構(gòu)師,面試的公司包括蝦皮、希音、美團(tuán)等大廠,目標(biāo)薪酬50K以上,遇到了一個(gè)比較初級(jí)的問(wèn)題: 請(qǐng)手寫一個(gè)Strategy模式(策略模式) 或者請(qǐng)手寫一個(gè)template模式(模板模式) 或者請(qǐng)手寫一個(gè)proxy模式(

    2024年02月16日
    瀏覽(19)
  • Java設(shè)計(jì)模式之策略(Strategy)模式

    策略(Strategy)設(shè)計(jì)模式定義了一系列算法,將它們封裝起來(lái),并且可以相互替換使用,從而使得算法可以獨(dú)立于使用它的客戶而變化。 策略(Strategy)設(shè)計(jì)模式是一種行為型設(shè)計(jì)模式,它允許在運(yùn)行時(shí)動(dòng)態(tài)地選擇算法。策略模式將算法封裝為算法族,從而可以在運(yùn)行時(shí)根據(jù)

    2024年02月15日
    瀏覽(34)
  • Java設(shè)計(jì)模式—策略模式(Strategy Mode)

    目錄 前言 一、策略模式的簡(jiǎn)介 二、策略模式的概念 三、策略模式的作用 四、策略模式的優(yōu)、缺點(diǎn) 策略模式的優(yōu)點(diǎn): 策略模式的缺點(diǎn): 五、策略模式應(yīng)用場(chǎng)景 六、代碼案例 1)抽象接口類 2)具體的策略類:減 3)具體策略類:打折 4)上下文類 5)客戶端Main代碼測(cè)試 總結(jié)

    2024年02月08日
    瀏覽(34)
  • 【設(shè)計(jì)模式-02】Strategy策略模式及應(yīng)用場(chǎng)景

    Java 官方文檔 Overview (Java SE 18 JDK 18) module index https://docs.oracle.com/en/java/javase/18/docs/api/index.html Java中使用到的策略模式 Comparator、comparable Comparator (Java SE 18 JDK 18) declaration: module: java.base, package: java.util, interface: Comparator https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/util/Compar

    2024年01月16日
    瀏覽(22)
  • 【設(shè)計(jì)模式-03】Strategy策略模式及應(yīng)用場(chǎng)景

    【設(shè)計(jì)模式-03】Strategy策略模式及應(yīng)用場(chǎng)景

    Java 官方文檔 Overview (Java SE 18 JDK 18) module index https://docs.oracle.com/en/java/javase/18/docs/api/index.html Java中使用到的策略模式 Comparator、comparable Comparator (Java SE 18 JDK 18) declaration: module: java.base, package: java.util, interface: Comparator https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/util/Compar

    2024年01月22日
    瀏覽(25)
  • C++設(shè)計(jì)模式_04_Strategy 策略模式

    接上篇,本篇將會(huì)介紹C++設(shè)計(jì)模式中的 Strategy 策略模式 ,和上篇 模板方法Template Method 一樣,仍屬于“組件協(xié)作”模式,它與Template Method有著異曲同工之妙。 在軟件構(gòu)建過(guò)程中,某些對(duì)象使用的算法可能多種多樣?

    2024年02月09日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包