一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java設(shè)計模式-策略模式詳解

Java設(shè)計模式-策略模式詳解

2023-12-03 01:06未知服務(wù)器之家 Java教程

Java設(shè)計模式-策略模式詳解 1.策略模式基本了解 策略模式(Strategy Pattern)是一種行為型設(shè)計模式,它定義了一組可以相互替換的算法,使得客戶端可以根據(jù)不同的需求選擇不同的算法,將對象和行為分開。 在策略模式中,我們創(chuàng)

Java設(shè)計模式-策略模式詳解

1.策略模式基本了解

策略模式(Strategy Pattern)是一種行為型設(shè)計模式,它定義了一組可以相互替換的算法,使得客戶端可以根據(jù)不同的需求選擇不同的算法,將對象和行為分開。

在策略模式中,我們創(chuàng)建了一個策略接口,該接口定義了所有必需的方法。然后,我們創(chuàng)建了實現(xiàn)了該策略接口的具體策略類。最后,客戶端代碼在運行時根據(jù)需求選擇不同的策略。

策略模式的主要優(yōu)點是它使得算法可以*切換,避免了使用多重條件語句判斷,提高了代碼的可維護性和擴展性。缺點是隨著策略的增多,所有策略類都需要對外暴露,這可能導(dǎo)致客戶端代碼過于復(fù)雜。

if-else也可以實現(xiàn),但是我們最終的目的不就是為了可維護性高,以及裝逼嘛(開個玩笑),畢竟很多Java的框架源代碼都用到了這種模式,了解之后有助于學(xué)習(xí)這些框架。

2.三要素

  • 策略接口:策略接口定義了所有具體策略類必須實現(xiàn)的方法
  • 具體策略類:具體策略類實現(xiàn)了策略接口,并提供了具體的算法實現(xiàn)
  • 上下文類:上下文類持有一個策略接口的引用,并在運行時根據(jù)需要調(diào)用具體策略類的方法

3.使用場景:

即不同的對象對于同一動作有不同的行為的時候。

比如同樣都是支付行為,微信支付沒有優(yōu)惠,支付寶支付有優(yōu)惠。支付動作可以定義在策略接口,微信支付和支付寶支付分別實現(xiàn)這個接口,然后支付者作為使用者有一個統(tǒng)一的支付方法,參數(shù)就是支付策略接口,那么選擇支付寶支付,就是策略接口指向支付寶支付實現(xiàn)類,然后調(diào)用支付方法。

// 策略接口
interface Strategy {
    void execute();
}

// 具體策略類1
class ConcreteStrategy1 implements Strategy {
    @Override
    public void execute() {
        System.out.println("執(zhí)行策略1");
    }
}

// 具體策略類2
class ConcreteStrategy2 implements Strategy {
    @Override
    public void execute() {
        System.out.println("執(zhí)行策略2");
    }
}

// 上下文類
class Context {
    private Strategy strategy;

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

    public void executeStrategy() {
        strategy.execute();
    }
}

// 使用策略模式
public class Main {
    public static void main(String[] args) {
        Strategy strategy1 = new ConcreteStrategy1();
        Strategy strategy2 = new ConcreteStrategy2();

        Context context = new Context(strategy1);
        context.executeStrategy();

        context.setStrategy(strategy2);
        context.executeStrategy();
    }
}

Java設(shè)計模式-策略模式詳解

?

Java設(shè)計模式-策略模式詳解

?


?

?知識點補充:

在Java中,接口是一種抽象的數(shù)據(jù)類型,它定義了一組方法的簽名,但沒有提供方法的具體實現(xiàn)。接口可以被類實現(xiàn),一個類可以實現(xiàn)一個或多個接口。

當(dāng)你創(chuàng)建一個接口的對象時,你實際上是創(chuàng)建了一個指向具體實現(xiàn)類的引用。這意味著你可以使用接口類型的引用來調(diào)用實現(xiàn)類中定義的方法。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人精品mv视频在线观看 | 青青热久久综合网伊人 | 91热国内精品永久免费观看 | 99性视频| 男人jj视频 | 精品高潮呻吟99AV无码视频 | 日韩不卡一区二区三区 | 亚洲日韩中文字幕一区 | 成人精品亚洲人成在线 | 久久久无码精品亚洲A片猫咪 | 4虎影视国产在线观看精品 4s4s4s4s色大众影视 | 好大好爽好硬 | 国产欧美日韩专区毛茸茸 | 亚洲老头与老太hd | 男男按摩1069gⅴ | 成人深夜视频 | 狠狠的撞进去嗯啊h女强男视频 | 精品视频二区 | 色婷婷天天综合在线 | 欧美日韩亚洲高清不卡一区二区三区 | 隔壁老王国产在线精品 | 欧美人鲁交大全 | 国产香蕉一区二区精品视频 | 俄罗斯烧性春三级k8播放 | 亚洲精品国产精品精 | 92精品国产成人观看免费 | 青青网| 小小水蜜桃视频高清在线观看免费 | 日本在线视频免费观看 | 九九热在线观看视频 | 成年无限观看onlyfans | 国产在线一区二区杨幂 | 国产在线欧美精品 | 冰山美人调教耻辱h | 亚洲福利一区 | 久久精品国产免费播高清无卡 | 99精品视频免费 | 四虎影院在线免费 | 99福利在线观看 | 高肉h护士办公室play | 暖暖视频日本 |