IT评测·应用市场-qidao123.com

标题: 策略模式 [打印本页]

作者: 半亩花草    时间: 2025-1-25 07:08
标题: 策略模式
在软件开辟的世界里,我们经常会遇到这样的场景:一个对象必要根据不同的情况采取不同的算法或行为。比方,在一个电商体系中,计算商品折扣时,针对不同的用户品级(平凡用户、会员用户、高级会员用户等)可能有不同的折扣策略。传统的办理方式可能是在一个方法中通过大量的条件判定语句(如 if - else 或 switch - case)来实现不同的行为逻辑,但这种方式会使代码变得痴肥、难以维护,并且倒霉于扩展新的行为。策略模式(Strategy Pattern)为这类问题提供了一种优雅的办理方案,它将不同的算法或行为封装成独立的策略类,使得对象可以在运行时根据必要灵活地选择不同的策略。

策略模式概述

策略模式是一种行为型筹划模式,它定义了一系列算法,将每个算法都封装起来,并且使它们之间可以互相替换。策略模式主要包含以下几个角色:

策略模式代码示例

以下是利用 Java 语言实现策略模式的示例代码。以一个简单的付出体系为例,体系支持多种付出方式(如付出宝付出、微信付出、银行卡付出),每种付出方式有不同的付出逻辑。
  1. // 抽象策略类:支付策略
  2. interface PaymentStrategy {
  3.     void pay(double amount);
  4. }
  5. // 具体策略类:支付宝支付
  6. class AlipayStrategy implements PaymentStrategy {
  7.     @Override
  8.     public void pay(double amount) {
  9.         System.out.println("使用支付宝支付金额:" + amount);
  10.     }
  11. }
  12. // 具体策略类:微信支付
  13. class WeChatPayStrategy implements PaymentStrategy {
  14.     @Override
  15.     public void pay(double amount) {
  16.         System.out.println("使用微信支付金额:" + amount);
  17.     }
  18. }
  19. // 具体策略类:银行卡支付
  20. class BankCardPayStrategy implements PaymentStrategy {
  21.     @Override
  22.     public void pay(double amount) {
  23.         System.out.println("使用银行卡支付金额:" + amount);
  24.     }
  25. }
  26. // 环境类:支付上下文
  27. class PaymentContext {
  28.     private PaymentStrategy paymentStrategy;
  29.     public PaymentContext(PaymentStrategy paymentStrategy) {
  30.         this.paymentStrategy = paymentStrategy;
  31.     }
  32.     public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
  33.         this.paymentStrategy = paymentStrategy;
  34.     }
  35.     public void executePayment(double amount) {
  36.         paymentStrategy.pay(amount);
  37.     }
  38. }
  39. public class StrategyPatternDemo {
  40.     public static void main(String[] args) {
  41.         // 使用支付宝支付
  42.         PaymentContext paymentContext = new PaymentContext(new AlipayStrategy());
  43.         paymentContext.executePayment(100.0);
  44.         // 切换为微信支付
  45.         paymentContext.setPaymentStrategy(new WeChatPayStrategy());
  46.         paymentContext.executePayment(200.0);
  47.         // 切换为银行卡支付
  48.         paymentContext.setPaymentStrategy(new BankCardPayStrategy());
  49.         paymentContext.executePayment(300.0);
  50.     }
  51. }
复制代码
在上述代码中,PaymentStrategy 是抽象策略类,定义了付出的接口 pay。AlipayStrategy、WeChatPayStrategy 和 BankCardPayStrategy 是具体策略类,分别实现了不同付出方式的付出逻辑。PaymentContext 是环境类,持有一个 PaymentStrategy 的引用,通过 executePayment 方法调用具体策略类的 pay 方法来实验付出操纵。在 main 方法中,我们创建了 PaymentContext 对象,并通过设置不同的付出策略,演示了在运行时动态切换付出方式的过程。

策略模式的应用场景


策略模式的优缺点


结语

盼望本文能资助您更好地理解策略模式的概念及实在际应用。假如您有任何疑问或发起,请随时留言交换。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4