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

标题: 【Java知识】Java进阶-战略模式实现 [打印本页]

作者: 飞不高    时间: 2024-11-28 11:46
标题: 【Java知识】Java进阶-战略模式实现
战略模式(Strategy Pattern)是一种举动计划模式,它界说了一系列算法,并将每一个算法封装起来,使它们可以互换。战略模式使得算法可以独立于使用它的客户端而变化。
紧张脚色

示例代码

以下是一个简单的战略模式示例,用于计算差别折扣战略下的价格。
  1. // 策略接口
  2. interface DiscountStrategy {
  3.     double calculateDiscount(double price);
  4. }
  5. // 具体策略:无折扣
  6. class NoDiscountStrategy implements DiscountStrategy {
  7.     @Override
  8.     public double calculateDiscount(double price) {
  9.         return price;
  10.     }
  11. }
  12. // 具体策略:百分比折扣
  13. class PercentageDiscountStrategy implements DiscountStrategy {
  14.     private double percentage;
  15.     public PercentageDiscountStrategy(double percentage) {
  16.         this.percentage = percentage;
  17.     }
  18.     @Override
  19.     public double calculateDiscount(double price) {
  20.         return price * (1 - percentage / 100);
  21.     }
  22. }
  23. // 具体策略:固定金额折扣
  24. class FixedAmountDiscountStrategy implements DiscountStrategy {
  25.     private double amount;
  26.     public FixedAmountDiscountStrategy(double amount) {
  27.         this.amount = amount;
  28.     }
  29.     @Override
  30.     public double calculateDiscount(double price) {
  31.         return price - amount;
  32.     }
  33. }
  34. // 上下文
  35. class ShoppingCart {
  36.     private DiscountStrategy discountStrategy;
  37.     public ShoppingCart(DiscountStrategy discountStrategy) {
  38.         this.discountStrategy = discountStrategy;
  39.     }
  40.     public void setDiscountStrategy(DiscountStrategy discountStrategy) {
  41.         this.discountStrategy = discountStrategy;
  42.     }
  43.     public double calculateTotal(double price) {
  44.         return discountStrategy.calculateDiscount(price);
  45.     }
  46. }
  47. // 客户端代码
  48. public class StrategyPatternDemo {
  49.     public static void main(String[] args) {
  50.         double price = 100.0;
  51.         ShoppingCart cart = new ShoppingCart(new NoDiscountStrategy());
  52.         System.out.println("Total price with no discount: " + cart.calculateTotal(price));
  53.         cart.setDiscountStrategy(new PercentageDiscountStrategy(10));
  54.         System.out.println("Total price with 10% discount: " + cart.calculateTotal(price));
  55.         cart.setDiscountStrategy(new FixedAmountDiscountStrategy(15));
  56.         System.out.println("Total price with $15 discount: " + cart.calculateTotal(price));
  57.     }
  58. }
复制代码
长处

缺点

实用场景


战略模式是一种非常灵活的计划模式,实用于需要动态选择算法的场景。通过封装算法,战略模式使得算法的变化不会影响到使用它的客户端代码。
相关文献

【知识科普】一篇文章教你学会计划模式

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




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