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

實際開發(fā)中常用的設(shè)計模式--------策略模式(知識跟業(yè)務(wù)場景結(jié)合)-----小白也能看懂(通俗易懂版本)

這篇具有很好參考價值的文章主要介紹了實際開發(fā)中常用的設(shè)計模式--------策略模式(知識跟業(yè)務(wù)場景結(jié)合)-----小白也能看懂(通俗易懂版本)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1.策略模式定義:
策略模式是一種行為型設(shè)計模式,它允許在運(yùn)行時動態(tài)地改變對象的行為。策略模式將將每一個算法封裝到具有共同接口的獨(dú)立的類中,從而使得它們可以相互替換從而使得算法的變化不會影響到客戶端
2.簡單的策略模式示例代碼:

public interface SortStrategy {
    void sort(int[] data);
}

public class BubbleSort implements SortStrategy {
    @Override
    public void sort(int[] data) {
        // 冒泡排序算法實現(xiàn)
    }
}

public class QuickSort implements SortStrategy {
    @Override
    public void sort(int[] data) {
        // 快速排序算法實現(xiàn)
    }
}

public class Sorter {
    private SortStrategy strategy;

    public Sorter(SortStrategy strategy) {
        this.strategy = strategy;
    }

    public void setStrategy(SortStrategy strategy) {
        this.strategy = strategy;
    }

    public void sort(int[] data) {
        strategy.sort(data);
    }
}

在上述代碼中,SortStrategy 表示一個排序策略接口,其中定義了一個 sort() 方法用于對數(shù)據(jù)進(jìn)行排序。BubbleSort 和 QuickSort 則表示具體的排序策略類,分別實現(xiàn)了 sort() 方法來進(jìn)行冒泡排序和快速排序。

而 Sorter 則表示一個排序器類,其中包含一個名為 strategy 的成員變量來存儲當(dāng)前使用的排序策略。通過使用構(gòu)造函數(shù)或者 setter 方法來設(shè)置當(dāng)前使用的排序策略,并且通過調(diào)用 sort() 方法來對數(shù)據(jù)進(jìn)行排序。

例如,在客戶端中可以按照如下方式使用該策略模式:

int[] data = { 5, 2, 4, 6, 1, 3 };
Sorter sorter = new Sorter(new BubbleSort());
sorter.sort(data); // 使用冒泡排序

sorter.setStrategy(new QuickSort());
sorter.sort(data); // 使用快速排序

在上述代碼中,我們首先創(chuàng)建了一個數(shù)組 data 并且初始化其值。然后創(chuàng)建了一個 Sorter 對象并且使用冒泡排序作為初始的排序策略。最后調(diào)用 sort() 方法對數(shù)據(jù)進(jìn)行排序,并且通過設(shè)置新的排序策略來切換不同的算法。

總之,在策略模式中,我們將不同的算法封裝成獨(dú)立的類,并且使得它們可以互相替換。這樣可以使得程序更加靈活和易于維護(hù),并且提高代碼復(fù)用性和可擴(kuò)展性。

3.策略模式的基本步驟

策略模式的基本步驟如下:

  1. 定義策略接口:定義一個策略接口,其中包含一個或多個方法用于實現(xiàn)不同的算法。

  2. 實現(xiàn)具體策略類:針對不同的算法,分別實現(xiàn)具體的策略類,并且實現(xiàn)相應(yīng)的方法。

  3. 定義上下文類:定義一個上下文類,其中包含一個成員變量用于存儲當(dāng)前使用的策略對象,并且提供相應(yīng)的 setter 方法來設(shè)置當(dāng)前使用的策略對象。

  4. 調(diào)用上下文類:在客戶端中創(chuàng)建上下文對象,并且通過調(diào)用其相應(yīng)的方法來執(zhí)行算法。

簡單的策略模式示例代碼,用于計算兩個數(shù)的和或差:

1.定義策略接口 OperationStrategy:

public interface OperationStrategy {
    int operate(int num1, int num2);
}

2.實現(xiàn)具體策略類 AdditionStrategy 和 SubtractionStrategy:

public class AdditionStrategy implements OperationStrategy {
    @Override
    public int operate(int num1, int num2) {
        return num1 + num2;
    }
}

public class SubtractionStrategy implements OperationStrategy {
    @Override
    public int operate(int num1, int num2) {
        return num1 - num2;
    }
}

3.定義上下文類 Calculator:

public class Calculator {
    private OperationStrategy strategy;

    public void setStrategy(OperationStrategy strategy) {
        this.strategy = strategy;
    }

    public int calculate(int num1, int num2) {
        return strategy.operate(num1, num2);
    }
}

4.調(diào)用上下文類 Calculator:

// 客戶端代碼
int a = 10;
int b = 5;

Calculator calculator = new Calculator();
calculator.setStrategy(new AdditionStrategy());
int result = calculator.calculate(a, b); // 計算 a + b

calculator.setStrategy(new SubtractionStrategy());
result = calculator.calculate(a, b); // 計算 a - b

在上述代碼中,我們首先定義了一個名為 OperationStrategy 的接口,并且包含一個名為 operate() 的方法用于進(jìn)行加法或減法操作。然后定義了兩個具體的策略類,分別實現(xiàn)了相應(yīng)的方法來完成加法和減法操作。

接著,我們定義了一個名為 Calculator 的上下文類,并且包含一個成員變量用于存儲當(dāng)前使用的策略對象。通過提供相應(yīng)的 setter 方法來設(shè)置當(dāng)前使用的策略對象,并且通過調(diào)用其 calculate() 方法來執(zhí)行相應(yīng)的算法。

最后,在客戶端中創(chuàng)建一個 Calculator 對象,并且分別設(shè)置不同的策略對象來進(jìn)行加法或減法操作。

4.實際的業(yè)務(wù)場景:

假設(shè)我們正在開發(fā)一個在線商城,需要為用戶提供不同的支付方式,例如信用卡、支付寶、微信

首先定義一個支付策略接口 PaymentStrategy,其中包含一個名為 pay() 的方法用于進(jìn)行支付操作。然后定義具體的支付策略類,例如 CreditCardPayment、AlipayPayment 和 WechatPayment 等,并且分別實現(xiàn) pay() 方法來完成相應(yīng)的支付流程。

代碼如下:

public interface PaymentStrategy {
    void pay(double amount);
}

public class CreditCardPayment implements PaymentStrategy {
    @Override
    public void pay(double amount) {
        // 信用卡支付流程
    }
}

public class AlipayPayment implements PaymentStrategy {
    @Override
    public void pay(double amount) {
        // 支付寶支付流程
    }
}

public class WechatPayment implements PaymentStrategy {
    @Override
    public void pay(double amount) {
        // 微信支付流程
    }
}

在上述代碼中,我們首先定義了一個名為 PaymentStrategy 的接口,并且包含一個名為 pay() 的方法用于進(jìn)行支付操作。然后定義了三個具體的支付策略類,并且分別實現(xiàn)了 pay() 方法來完成相應(yīng)的支付流程。

最后,在客戶端中根據(jù)用戶選擇的支付方式創(chuàng)建相應(yīng)的支付策略對象,并且調(diào)用其 pay() 方法來進(jìn)行支付操作。例如:

// 客戶端代碼
double totalPrice = 1000.0;
String paymentMethod = "credit_card"; // 用戶選擇信用卡付款

if (paymentMethod.equals("credit_card")) {
    PaymentStrategy paymentStrategy = new CreditCardPayment();
    paymentStrategy.pay(totalPrice);
} else if (paymentMethod.equals("alipay")) {
    PaymentStrategy paymentStrategy = new AlipayPayment();
    paymentStrategy.pay(totalPrice);
} else if (paymentMethod.equals("wechat")) {
    PaymentStrategy paymentStrategy = new WechatPayment();
    paymentStrategy.pay(totalPrice);
}

在上述代碼中,我們首先定義了訂單總價和用戶選擇的付款方式(這里假設(shè)用戶選擇信用卡付款)。然后根據(jù)用戶選擇創(chuàng)建相應(yīng)的支付策略對象,并且調(diào)用其 pay() 方法來進(jìn)行付款操作。文章來源地址http://www.zghlxwxcb.cn/news/detail-535934.html

到了這里,關(guān)于實際開發(fā)中常用的設(shè)計模式--------策略模式(知識跟業(yè)務(wù)場景結(jié)合)-----小白也能看懂(通俗易懂版本)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • [設(shè)計模式]行為型模式-策略模式

    策略模式定義了一系列算法,并將每個算法封裝起來,使它們可以互相替換,且算法的變換不會影響使用算法的客戶。 在項目開發(fā)中,我們經(jīng)常要根據(jù)不同的場景,采取不同的措施,也就是不同的策略。假設(shè)我們需要對a、b這兩個整數(shù)進(jìn)行計算,根據(jù)條件的不同,需要執(zhí)行不

    2024年02月19日
    瀏覽(32)
  • 設(shè)計模式之策略模式

    策略設(shè)計模式(Strategy Pattern)是一種行為設(shè)計模式,它允許在運(yùn)行時選擇算法的行為。策略模式定義了一系列算法,并將每個算法封裝起來,使它們可以互相替換。這種模式使算法的變化獨(dú)立于使用算法的客戶端。 概念 在策略模式中,有以下幾個關(guān)鍵組成部分: 策略接口(

    2024年01月23日
    瀏覽(50)
  • 設(shè)計模式——策略模式

    設(shè)計模式——策略模式

    定義: 該模式定義了一系列算法,并將每個算法封裝起來,使它們可以相互替換,且算法的變化不會影響使用算法的客戶。策略模式屬于對象行為模式,它通過對算法進(jìn)行封裝,把便用算法的責(zé)任和算法的實現(xiàn)分割開來,并委派給不算法進(jìn)象行管理。 主要角色如下: 示例: 假定現(xiàn)在需要

    2024年02月22日
    瀏覽(20)
  • 《設(shè)計模式》策略模式

    《設(shè)計模式》策略模式

    定義 : 又叫作 政策模式,將定義的一系列算法封裝起來,使得它們之間可以互相替換,從而讓算法的變化不影響到使用算法的用戶 。 屬于 行為型 模式。 策略模式的組成角色 : 環(huán)境類(Context) : 環(huán)境類是使用算法的角色 ,用來操作策略的上下文環(huán)境,屏蔽高層模塊(客戶

    2024年02月01日
    瀏覽(28)
  • 設(shè)計模式—策略模式

    設(shè)計模式—策略模式

    目錄 一、定義 二、特點(diǎn) 三、優(yōu)點(diǎn) 四、缺點(diǎn) 五、實例 六.涉及到的知識點(diǎn) 1、一個類里面有哪些東西? 2、類和實例 什么是類? 什么是實例? 什么是實例化? 3、字段和屬性 什么是字段? 屬性是什么? 屬性怎么用呢? 屬性有什么作用? 靜態(tài)屬性是什么? 屬性和字段的公有

    2024年02月10日
    瀏覽(23)
  • 【設(shè)計模式】4、策略模式

    【設(shè)計模式】4、策略模式

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

    2024年02月20日
    瀏覽(23)
  • 設(shè)計模式-策略模式

    策略模式是一種行為型設(shè)計模式,它允許在運(yùn)行時動態(tài)改變對象的行為。在策略模式中,算法被封裝在獨(dú)立的策略類中,使得它們可以互換使用。下面是一個簡單的例子: 假設(shè)我們有一個計算稅收的系統(tǒng),現(xiàn)在需要計算不同類型的商品的稅收,例如書籍、食品和服裝。每種商

    2024年02月15日
    瀏覽(25)
  • 設(shè)計模式:策略模式

    策略模式(Strategy Pattern)是一種行為型設(shè)計模式,它允許在運(yùn)行時根據(jù)不同的情況選擇不同的算法或行為。策略模式通過將算法封裝成獨(dú)立的策略類,使得它們可以互相替換,而不影響客戶端的使用。 在策略模式中,有三個核心組件: 策略接口(Strategy Interface):定義了策

    2024年02月07日
    瀏覽(23)
  • 【設(shè)計模式】 策略模式

    策略模式 (Strategy Pattern)是一種行為型設(shè)計模式,它定義了一系列算法,將每個算法封裝起來,使它們可以相互替換,讓客戶端代碼和算法的具體實現(xiàn)解耦。這樣,客戶端可以根據(jù)不同的需求選擇不同的算法,而無需修改原有的代碼。 靈活性增強(qiáng) :策略模式使得算法獨(dú)立于

    2024年02月14日
    瀏覽(37)
  • 設(shè)計模式--策略模式

    設(shè)計模式--策略模式

    目錄 一.場景 1.1場景 2.2 何時使用 ?2.3個人理解 二. 業(yè)務(wù)場景練習(xí) ?2.1業(yè)務(wù): 2.2具體實現(xiàn) 2.3思路? ?三.總結(jié) 3.1策略模式的特點(diǎn): ?3.2策略模式優(yōu)點(diǎn) 3.3策略模式缺點(diǎn) 1.1場景 許多相關(guān)的類僅僅是行為有異,也就是說業(yè)務(wù)代碼需要根據(jù)場景不同,切換不同的實現(xiàn)邏輯 一個類定義了

    2024年02月13日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包