您的位置:首页 > 科技 > 能源 > 金华网站建设公司招聘_沭阳县疫情风险区_关键词优化技巧有哪些_seo博客写作

金华网站建设公司招聘_沭阳县疫情风险区_关键词优化技巧有哪些_seo博客写作

2025/1/16 6:48:14 来源:https://blog.csdn.net/qq_20236937/article/details/143285596  浏览:    关键词:金华网站建设公司招聘_沭阳县疫情风险区_关键词优化技巧有哪些_seo博客写作
金华网站建设公司招聘_沭阳县疫情风险区_关键词优化技巧有哪些_seo博客写作

Spring 设计模式之策略模式

  • 策略模式
  • 构成部分
  • java举例

策略模式

策略模式:允许定义一系列算法,并将每一个算法封装起来,使它们可以互相替换,且算法的变化可以独立于使用它们的客户端。

构成部分

  • Context(上下文):维护一个对策略对象的引用,该对象用于客户端调用。
  • Strategy(策略接口):定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,以便环境角色可以使用这个接口来调用不同的算法。
  • ConcreteStrategy(具体策略类):实现了策略接口,提供具体的算法实现。

java举例

// 策略接口  
interface DiscountStrategy {  double calculateDiscount(double totalAmount);  
}  // 具体策略1:百分比折扣  
class PercentageDiscountStrategy implements DiscountStrategy {  private double percentage;  public PercentageDiscountStrategy(double percentage) {  this.percentage = percentage;  }  @Override  public double calculateDiscount(double totalAmount) {  return totalAmount * percentage;  }  
}  // 具体策略2:固定金额折扣  
class FixedAmountDiscountStrategy implements DiscountStrategy {  private double amount;  public FixedAmountDiscountStrategy(double amount) {  this.amount = amount;  }  @Override  public double calculateDiscount(double totalAmount) {  return amount;  }  
}  // 上下文类  
class Order {  private DiscountStrategy discountStrategy;  public Order(DiscountStrategy discountStrategy) {  this.discountStrategy = discountStrategy;  }  public double getTotalAmount() {  // 假设订单总金额为1000元  return 1000.0;  }  public double calculateDiscount() {  return discountStrategy.calculateDiscount(getTotalAmount());  }  
}  // 客户端使用  
public class ECommercePlatform {  public static void main(String[] args) {  // 使用百分比折扣策略  Order order1 = new Order(new PercentageDiscountStrategy(0.10)); // 10%折扣  double discount1 = order1.calculateDiscount();  System.out.println("折扣金额: " + discount1);  // 使用固定金额折扣策略  Order order2 = new Order(new FixedAmountDiscountStrategy(50.0)); // 固定减免50元  double discount2 = order2.calculateDiscount();  System.out.println("折扣金额: " + discount2);  }  
}

输出

折扣金额: 100.0
折扣金额: 50.0

我们定义了一个DiscountStrategy接口,并实现了两个具体策略类:PercentageDiscountStrategy(百分比折扣)和FixedAmountDiscountStrategy(固定金额折扣)。
然后,我们创建了一个Order类作为上下文类,它包含一个对DiscountStrategy对象的引用,并提供了计算折扣的方法。
在客户端代码中,我们根据不同的需求创建了不同的订单对象,并使用了不同的折扣策略来计算折扣金额。

版权声明:

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

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