当前位置: 首页> 房产> 建筑 > 建e网室内设计网母_个人域名备案后不能干什么_珠海网站建设_福州seo代理计费

建e网室内设计网母_个人域名备案后不能干什么_珠海网站建设_福州seo代理计费

时间:2025/7/12 11:04:21来源:https://blog.csdn.net/DreamCollector/article/details/147483360 浏览次数:0次
建e网室内设计网母_个人域名备案后不能干什么_珠海网站建设_福州seo代理计费

Java 策略模式(Strategy Pattern)详解

🧠 什么是策略模式?

策略模式是一种行为型设计模式,它定义了一系列算法,把它们一个个封装起来,并且使它们可以互相替换。策略模式让算法独立于使用它的客户端独立变化。


🎯 使用场景

  • 多种算法或行为频繁切换
  • 避免冗长的 if-elseswitch 语句
  • 希望将行为的选择交由客户端决定

🏗️ 模式结构

  • Context(上下文):维护一个对策略对象的引用
  • Strategy(抽象策略类):定义所有支持的算法的公共接口
  • ConcreteStrategy(具体策略类):实现具体的算法

✅ 示例:支付策略

策略接口(Strategy)

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

具体策略(ConcreteStrategy)

public class CreditCardPayment implements PaymentStrategy {private String cardNumber;public CreditCardPayment(String cardNumber) {this.cardNumber = cardNumber;}@Overridepublic void pay(int amount) {System.out.println("使用信用卡支付 " + amount + " 元,卡号:" + cardNumber);}
}public class WeChatPayment implements PaymentStrategy {@Overridepublic void pay(int amount) {System.out.println("使用微信支付 " + amount + " 元");}
}

上下文类(Context)

public class PaymentContext {private PaymentStrategy strategy;public void setStrategy(PaymentStrategy strategy) {this.strategy = strategy;}public void executePayment(int amount) {strategy.pay(amount);}
}

客户端调用

public class Client {public static void main(String[] args) {PaymentContext context = new PaymentContext();context.setStrategy(new CreditCardPayment("1234-5678-9876"));context.executePayment(500);context.setStrategy(new WeChatPayment());context.executePayment(300);}
}

✅ 优点

  • 避免大量条件语句
  • 易于扩展新策略,符合开闭原则
  • 提高算法或行为的灵活性

⚠️ 缺点

  • 增加了类的数量
  • 客户端必须了解所有策略,才能选择合适的

🧩 使用建议

当你有多种行为变化的情况,并希望通过多态将它们分开处理时,策略模式是一个很优雅的选择。

关键字:建e网室内设计网母_个人域名备案后不能干什么_珠海网站建设_福州seo代理计费

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: