激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

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

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

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

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

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

1.策略模式基本了解

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

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

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

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

2.三要素

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

3.使用場(chǎng)景:

即不同的對(duì)象對(duì)于同一動(dòng)作有不同的行為的時(shí)候。

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

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

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

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

// 上下文類(lèi)
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è)計(jì)模式-策略模式詳解

?

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

?


?

?知識(shí)點(diǎn)補(bǔ)充:

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91婷婷射 | 欧美精品激情视频 | 亚洲最新无码中文字幕久久 | 国产一区二区在线观看视频 | 久草在线视频在线 | 毛片免费试看 | 亚洲日本韩国精品 | 亚洲第一精品在线 | 欧洲精品久久久 | 九色新网址 | 国产一级爱c视频 | 最新中文字幕免费视频 | 久久久久中文字幕 | 国产肥熟 | 国产在线观看免费视频软件 | 大西瓜永久免费av在线 | 中文字幕网址 | 久久久久99精品 | 国产999精品久久久久 | 日日狠狠久久偷偷四色综合免费 | 国产 日韩 一区 | xxxeexxx性国产| 精品国产乱码久久久久久久久 | xxx日本视频| 日本爽快片100色毛片视频 | 黄色高清免费网站 | 伊人久操视频 | 亚洲影视综合网 | 成人不卡一区二区 | 久夜草| 亚州欧美在线 | 久久经典视频 | 精国产品一区二区三区 | 国产精品一区二区日韩 | 日韩视频区 | 久久亚洲激情 | 亚洲午夜精品视频 | 欧美激情综合网 | 久久久精品精品 | 久久福利精品 | 精品一二三区视频 |