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

Java設(shè)計(jì)模式之策略(Strategy)模式

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

策略(Strategy)設(shè)計(jì)模式定義了一系列算法,將它們封裝起來(lái),并且可以相互替換使用,從而使得算法可以獨(dú)立于使用它的客戶而變化。

什么是策略模式

策略(Strategy)設(shè)計(jì)模式是一種行為型設(shè)計(jì)模式,它允許在運(yùn)行時(shí)動(dòng)態(tài)地選擇算法。策略模式將算法封裝為算法族,從而可以在運(yùn)行時(shí)根據(jù)需要選擇不同的算法。策略模式將算法的定義與其使用分離,使得算法的形式可獨(dú)立于其具體應(yīng)用,這樣就可以在不修改代碼的情況下透明地改變算法。在 Java 中,策略模式通常使用接口或抽象類來(lái)定義不同的策略,然后在其具體實(shí)現(xiàn)類中分別實(shí)現(xiàn)各自的算法。

策略模式的使用場(chǎng)景

策略(Strategy)設(shè)計(jì)模式適用于以下情況:

  • 需要在運(yùn)行時(shí)動(dòng)態(tài)地改變對(duì)象的行為。
  • 有多個(gè)算法可選,客戶端需要根據(jù)不同的需要選擇不同的算法。
  • 一個(gè)類定義了多種行為,并且這些行為在類的方法中以多個(gè)條件語(yǔ)句的形式出現(xiàn)。這時(shí)候可以將每種條件分支轉(zhuǎn)化為一個(gè)獨(dú)立的策略。

策略模式的代碼示例

下面是一個(gè)簡(jiǎn)單的示例,用于演示策略(Strategy)設(shè)計(jì)模式的使用:

// 定義策略接口
interface Strategy {
    public int doOperation(int num1, int num2);
}

// 實(shí)現(xiàn)策略接口的具體實(shí)現(xiàn)類:加法策略
class OperationAdd implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        return num1 + num2;
    }
}

// 實(shí)現(xiàn)策略接口的具體實(shí)現(xiàn)類:減法策略
class OperationSubtract implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        return num1 - num2;
    }
}

// 實(shí)現(xiàn)策略接口的具體實(shí)現(xiàn)類:乘法策略
class OperationMultiply implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        return num1 * num2;
    }
}

// 定義上下文對(duì)象
class Context {
    private Strategy strategy;

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

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

// 客戶端代碼
public class Client {
    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));
    }
}

在上面的代碼中,我們定義了一個(gè) Strategy 接口,該接口用于定義不同的算法。我們實(shí)現(xiàn)了三個(gè)具體的策略類:OperationAdd、OperationSubtract 和 OperationMultiply,分別對(duì)應(yīng)加法、減法和乘法算法。每個(gè)具體策略類都實(shí)現(xiàn)了 Strategy 接口中的方法。

我們還定義了一個(gè) Context 上下文對(duì)象,它包含了一個(gè)策略對(duì)象,可以根據(jù)不同的策略執(zhí)行不同的算法。在 Context 對(duì)象中,定義了一個(gè) executeStrategy 方法,根據(jù)當(dāng)前策略對(duì)象執(zhí)行相應(yīng)的算法。

在客戶端代碼中,我們首先創(chuàng)建了一個(gè) Context 對(duì)象,并使用 OperationAdd 策略執(zhí)行加法算法。然后我們重新定義了 Context 對(duì)象,并使用 OperationSubtract 策略執(zhí)行減法算法。最后,我們又重新定義了 Context 對(duì)象,并使用 OperationMultiply 策略執(zhí)行乘法算法。

代碼的運(yùn)行結(jié)果為:

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

這是因?yàn)槲覀兎謩e使用了三個(gè)不同的策略(加法、減法和乘法),并將它們用于 Context 對(duì)象中執(zhí)行計(jì)算。最后,我們打印了每個(gè)計(jì)算的結(jié)果。

策略模式的實(shí)際應(yīng)用

  1. Spring框架:Spring框架中的依賴注入(DI)和控制反轉(zhuǎn)(IOC)機(jī)制允許在運(yùn)行時(shí)動(dòng)態(tài)選擇不同的實(shí)現(xiàn)。通過(guò)在配置文件中配置不同的策略,可以在不修改代碼的情況下實(shí)現(xiàn)選擇不同的策略。

  2. Hibernate框架:Hibernate框架中的查詢語(yǔ)言HQL(Hibernate Query Language)提供了不同的查詢策略,通過(guò)選擇不同的查詢策略,可以根據(jù)需求選擇合適的查詢方式,以提高查詢效率。

  3. Java集合框架:Java集合框架中的排序方法(Comparator)接口是策略模式的典型示例。使用排序策略接口,可以在不修改集合類的情況下,根據(jù)不同的條件進(jìn)行排序。

總結(jié)

策略(Strategy)設(shè)計(jì)模式提供了一種能夠在運(yùn)行時(shí)動(dòng)態(tài)地改變對(duì)象行為的解決方案。在策略設(shè)計(jì)模式中,將算法的實(shí)現(xiàn)與算法的使用者相分離,從而可以根據(jù)需要選擇不同的算法。通過(guò)使用接口或抽象類來(lái)定義各種策略,可以在運(yùn)行時(shí)動(dòng)態(tài)選擇合適的策略。這使得算法的改變能夠以透明的方式進(jìn)行,而不會(huì)影響客戶端代碼的實(shí)現(xiàn)。在實(shí)際軟件開(kāi)發(fā)中,策略設(shè)計(jì)模式被廣泛應(yīng)用,特別是在需要在運(yùn)行時(shí)改變對(duì)象行為的場(chǎng)景中。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-608567.html

到了這里,關(guān)于Java設(shè)計(jì)模式之策略(Strategy)模式的文章就介紹完了。如果您還想了解更多內(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ì)模式-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日
    瀏覽(24)
  • 設(shè)計(jì)模式二十二:策略模式(Strategy Pattern)

    定義一系列算法,將每個(gè)算法封裝成獨(dú)立的對(duì)象,并使這些對(duì)象可互相替換。這使得在運(yùn)行時(shí)可以動(dòng)態(tài)地選擇算法,而不必改變使用算法的客戶端代碼。策略模式的主要目標(biāo)是將算法的定義與使用分離,使得客戶端可以根據(jù)需要靈活地選擇和切換不同的算法,而不影響到客戶

    2024年02月11日
    瀏覽(20)
  • C++設(shè)計(jì)模式_04_Strategy 策略模式

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

    2024年02月09日
    瀏覽(19)
  • java設(shè)計(jì)模式---策略模式

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

    策略設(shè)計(jì)模式是一種行為設(shè)計(jì)模式。當(dāng)在處理一個(gè)業(yè)務(wù)時(shí),有多種處理方式,并且需要再運(yùn)行時(shí)決定使哪一種具體實(shí)現(xiàn)時(shí),就會(huì)使用策略模式。 策略模式的類圖: 在支付業(yè)務(wù)中,有三種付款方式,程序運(yùn)行時(shí)使用哪種方式由用戶選擇,根據(jù)用戶選擇執(zhí)行不同的邏輯。 首先,

    2024年02月10日
    瀏覽(18)
  • Java設(shè)計(jì)模式——策略模式

    Java設(shè)計(jì)模式——策略模式

    1. 策略模式簡(jiǎn)介 策略模式: 策略模式是一種行為型模式, 它將對(duì)象和行為分開(kāi), 將行為定義為一個(gè)行為接口和具體行為的實(shí)現(xiàn) 策略模式最大的特點(diǎn)是行為的變化, 行為之間可以相互替換 每個(gè)if判斷都可以理解為一個(gè)策略. 本模式是的算法可獨(dú)立于使用它的用戶而變化 2. 模式結(jié)構(gòu)

    2024年02月11日
    瀏覽(35)
  • Java設(shè)計(jì)模式之策略模式詳解

    大家好,我是免費(fèi)搭建查券返利機(jī)器人賺傭金就用微賺淘客系統(tǒng)3.0的小編,也是冬天不穿秋褲,天冷也要風(fēng)度的程序猿!今天,讓我們一同踏入Java設(shè)計(jì)模式之策略模式的世界,探討代碼中的智慧抉擇。 策略模式的核心思想 策略模式是一種行為型設(shè)計(jì)模式,它定義了算法家族

    2024年01月20日
    瀏覽(29)
  • Java特性之設(shè)計(jì)模式【策略模式】

    Java特性之設(shè)計(jì)模式【策略模式】

    概述 在策略模式(Strategy Pattern)中,一個(gè)類的行為或其算法可以在運(yùn)行時(shí)更改。這種類型的設(shè)計(jì)模式屬于行為型模式 在策略模式中,我們創(chuàng)建表示各種策略的對(duì)象和一個(gè)行為隨著策略對(duì)象改變而改變的 context 對(duì)象。策略對(duì)象改變 context 對(duì)象的執(zhí)行算法 主要解決 :在有多種

    2024年02月08日
    瀏覽(32)
  • Java設(shè)計(jì)模式——策略

    前言 策略模式是平時(shí)Java開(kāi)發(fā)中常用的一種,雖然已有很多講解設(shè)計(jì)模式的文章,但是這里還是寫篇文章來(lái)從自己理解的角度講解一下。 我們不妨進(jìn)行場(chǎng)景假設(shè),要對(duì)我們的軟件進(jìn)行授權(quán)管理:在啟動(dòng)我們的軟件之前先要校驗(yàn)是否存在合法的授權(quán),如果授權(quán)不合法則要求用戶

    2024年02月20日
    瀏覽(19)
  • Java設(shè)計(jì)模式-策略模式-基于Spring實(shí)現(xiàn)

    Java設(shè)計(jì)模式-策略模式-基于Spring實(shí)現(xiàn)

    策略模式是一種行為設(shè)計(jì)模式,它允許在運(yùn)行時(shí)選擇算法的行為。它將算法封裝在 獨(dú)立的策略類 中,使得它們可以相互替換,而不影響客戶端代碼。這種模式通過(guò) 將算法的選擇從客戶端代碼中分離出來(lái) ,提供了更大的靈活性和可維護(hù)性。 在Java中,策略模式的設(shè)計(jì)理念可以

    2024年02月08日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包