策略模式
一、介绍
策略模式是一种常用的设计模式,它可以帮助我们在软件开发中更好地组织和管理算法。在策略模式中,我们将不同的算法封装成独立的策略类,然后在运行时根据需要选择合适的策略来执行。
策略模式通常由三个主要组件组成:
上下文(Context): 上下文是策略模式的使用者,它负责将客户端的请求委派给具体的策略对象,并且可以在运行时动态地更换策略。
策略(Strategy): 策略是一个接口或抽象类,它定义了一个算法族的公共接口。不同的具体策略类实现了这个接口,每个策略类封装了一个具体的算法。
具体策略(Concrete Strategy): 具体策略是策略模式的核心,它实现了策略接口,定义了具体的算法。在运行时,上下文对象会根据需要选择合适的具体策略来执行。
二、如何使用策略模式
1.经典策略模式的实现
代码如下(示例):
// 使用策略模式,我们可以轻松地扩展和维护不同的促销策略,而不需要修改上下文类。这样,我们就实现了算法的解耦和动态切换。
interface PricingStrategy {
double calculatePrice(double originalPrice);
}
// 不打折
class RegularPricingStrategy implements PricingStrategy {
public double calculatePrice(double originalPrice) {
return originalPrice;
}
}
// 八折优惠
class DiscountPricingStrategy implements PricingStrategy {
public double calculatePrice(double originalPrice) {
return originalPrice * 0.8;
}
// 设置不同的促销策略
class ShoppingCart {
private PricingStrategy pricingStrategy;
public void setPricingStrategy(PricingStrategy pricingStrategy