实际开发中常用的设计模式--------策略模式(知识跟业务场景结合)-----小白也能看懂(通俗易懂版本)

这篇具有很好参考价值的文章主要介绍了实际开发中常用的设计模式--------策略模式(知识跟业务场景结合)-----小白也能看懂(通俗易懂版本)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.策略模式定义:
策略模式是一种行为型设计模式,它允许在运行时动态地改变对象的行为。策略模式将将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换从而使得算法的变化不会影响到客户端
2.简单的策略模式示例代码:

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

public class BubbleSort implements SortStrategy {
    @Override
    public void sort(int[] data) {
        // 冒泡排序算法实现
    }
}

public class QuickSort implements SortStrategy {
    @Override
    public void sort(int[] data) {
        // 快速排序算法实现
    }
}

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() 方法用于对数据进行排序。BubbleSort 和 QuickSort 则表示具体的排序策略类,分别实现了 sort() 方法来进行冒泡排序和快速排序。

而 Sorter 则表示一个排序器类,其中包含一个名为 strategy 的成员变量来存储当前使用的排序策略。通过使用构造函数或者 setter 方法来设置当前使用的排序策略,并且通过调用 sort() 方法来对数据进行排序。

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

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

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

在上述代码中,我们首先创建了一个数组 data 并且初始化其值。然后创建了一个 Sorter 对象并且使用冒泡排序作为初始的排序策略。最后调用 sort() 方法对数据进行排序,并且通过设置新的排序策略来切换不同的算法。

总之,在策略模式中,我们将不同的算法封装成独立的类,并且使得它们可以互相替换。这样可以使得程序更加灵活和易于维护,并且提高代码复用性和可扩展性。

3.策略模式的基本步骤

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

  1. 定义策略接口:定义一个策略接口,其中包含一个或多个方法用于实现不同的算法。

  2. 实现具体策略类:针对不同的算法,分别实现具体的策略类,并且实现相应的方法。

  3. 定义上下文类:定义一个上下文类,其中包含一个成员变量用于存储当前使用的策略对象,并且提供相应的 setter 方法来设置当前使用的策略对象。

  4. 调用上下文类:在客户端中创建上下文对象,并且通过调用其相应的方法来执行算法。

简单的策略模式示例代码,用于计算两个数的和或差:

1.定义策略接口 OperationStrategy:

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

2.实现具体策略类 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.调用上下文类 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() 的方法用于进行加法或减法操作。然后定义了两个具体的策略类,分别实现了相应的方法来完成加法和减法操作。

接着,我们定义了一个名为 Calculator 的上下文类,并且包含一个成员变量用于存储当前使用的策略对象。通过提供相应的 setter 方法来设置当前使用的策略对象,并且通过调用其 calculate() 方法来执行相应的算法。

最后,在客户端中创建一个 Calculator 对象,并且分别设置不同的策略对象来进行加法或减法操作。

4.实际的业务场景:

假设我们正在开发一个在线商城,需要为用户提供不同的支付方式,例如信用卡、支付宝、微信

首先定义一个支付策略接口 PaymentStrategy,其中包含一个名为 pay() 的方法用于进行支付操作。然后定义具体的支付策略类,例如 CreditCardPayment、AlipayPayment 和 WechatPayment 等,并且分别实现 pay() 方法来完成相应的支付流程。

代码如下:

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() 的方法用于进行支付操作。然后定义了三个具体的支付策略类,并且分别实现了 pay() 方法来完成相应的支付流程。

最后,在客户端中根据用户选择的支付方式创建相应的支付策略对象,并且调用其 pay() 方法来进行支付操作。例如:

// 客户端代码
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);
}

在上述代码中,我们首先定义了订单总价和用户选择的付款方式(这里假设用户选择信用卡付款)。然后根据用户选择创建相应的支付策略对象,并且调用其 pay() 方法来进行付款操作。文章来源地址https://www.toymoban.com/news/detail-535934.html

到了这里,关于实际开发中常用的设计模式--------策略模式(知识跟业务场景结合)-----小白也能看懂(通俗易懂版本)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [设计模式]行为型模式-策略模式

    策略模式定义了一系列算法,并将每个算法封装起来,使它们可以互相替换,且算法的变换不会影响使用算法的客户。 在项目开发中,我们经常要根据不同的场景,采取不同的措施,也就是不同的策略。假设我们需要对a、b这两个整数进行计算,根据条件的不同,需要执行不

    2024年02月19日
    浏览(23)
  • 设计模式—策略模式

    目录 一、定义 二、特点 三、优点 四、缺点 五、实例 六.涉及到的知识点 1、一个类里面有哪些东西? 2、类和实例 什么是类? 什么是实例? 什么是实例化? 3、字段和属性 什么是字段? 属性是什么? 属性怎么用呢? 属性有什么作用? 静态属性是什么? 属性和字段的公有

    2024年02月10日
    浏览(26)
  • 设计模式--策略模式

    目录 一.场景 1.1场景 2.2 何时使用  2.3个人理解 二. 业务场景练习  2.1业务: 2.2具体实现 2.3思路   三.总结 3.1策略模式的特点:  3.2策略模式优点 3.3策略模式缺点 1.1场景 许多相关的类仅仅是行为有异,也就是说业务代码需要根据场景不同,切换不同的实现逻辑 一个类定义了

    2024年02月13日
    浏览(23)
  • 设计模式之策略模式

    策略设计模式(Strategy Pattern)是一种行为设计模式,它允许在运行时选择算法的行为。策略模式定义了一系列算法,并将每个算法封装起来,使它们可以互相替换。这种模式使算法的变化独立于使用算法的客户端。 概念 在策略模式中,有以下几个关键组成部分: 策略接口(

    2024年01月23日
    浏览(26)
  • 《设计模式》策略模式

    定义 : 又叫作 政策模式,将定义的一系列算法封装起来,使得它们之间可以互相替换,从而让算法的变化不影响到使用算法的用户 。 属于 行为型 模式。 策略模式的组成角色 : 环境类(Context) : 环境类是使用算法的角色 ,用来操作策略的上下文环境,屏蔽高层模块(客户

    2024年02月01日
    浏览(21)
  • 设计模式:策略模式

    策略模式(Strategy Pattern)是一种行为型设计模式,它允许在运行时根据不同的情况选择不同的算法或行为。策略模式通过将算法封装成独立的策略类,使得它们可以互相替换,而不影响客户端的使用。 在策略模式中,有三个核心组件: 策略接口(Strategy Interface):定义了策

    2024年02月07日
    浏览(20)
  • 【设计模式】4、策略模式

    策略模式是一种行为设计模式,它能定义一系列算法,把每种算法分别放入独立的类中,以是算法的对象能相互替换。 一天, 你打算为游客们创建一款导游程序。 该程序的核心功能是提供美观的地图, 以帮助用户在任何城市中快速定位。 用户期待的程序新功能是自动路线

    2024年02月20日
    浏览(24)
  • 设计模式-策略模式

    策略模式是一种行为型设计模式,它允许在运行时动态改变对象的行为。在策略模式中,算法被封装在独立的策略类中,使得它们可以互换使用。下面是一个简单的例子: 假设我们有一个计算税收的系统,现在需要计算不同类型的商品的税收,例如书籍、食品和服装。每种商

    2024年02月15日
    浏览(22)
  • 【设计模式】 策略模式

    策略模式 (Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,将每个算法封装起来,使它们可以相互替换,让客户端代码和算法的具体实现解耦。这样,客户端可以根据不同的需求选择不同的算法,而无需修改原有的代码。 灵活性增强 :策略模式使得算法独立于

    2024年02月14日
    浏览(25)
  • 设计模式——策略模式

    定义: 该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把便用算法的责任和算法的实现分割开来,并委派给不算法进象行管理。 主要角色如下: 示例: 假定现在需要

    2024年02月22日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包