📅  最后修改于: 2023-12-03 15:27:25.322000             🧑  作者: Mango
策略模式(Strategy Pattern)是一种行为设计模式,它使得能够在运行时切换算法簇,这些算法簇表现出同样的行为。
策略模式是一种对象行为型模式。在策略模式中,一个对象包含有多个行为(算法),在运行时可以根据需要选择相应的行为。
策略模式适用于以下情况:
// 抽象策略
public interface DiscountStrategy {
double calculateDiscount(double price);
}
// 具体策略
public class StudentDiscount implements DiscountStrategy {
@Override
public double calculateDiscount(double price) {
return price * 0.8;
}
}
// 具体策略
public class VIPDiscount implements DiscountStrategy {
@Override
public double calculateDiscount(double price) {
return price * 0.5;
}
}
// 环境
public class DiscountContext {
private DiscountStrategy discountStrategy;
public void setDiscountStrategy(DiscountStrategy discountStrategy) {
this.discountStrategy = discountStrategy;
}
public double calculate(double price) {
return discountStrategy.calculateDiscount(price);
}
}
// 客户端
public class Client {
public static void main(String[] args) {
DiscountContext discountContext = new DiscountContext();
DiscountStrategy studentDiscount = new StudentDiscount();
DiscountStrategy vipDiscount = new VIPDiscount();
discountContext.setDiscountStrategy(studentDiscount);
System.out.println(discountContext.calculate(100)); // 80.0
discountContext.setDiscountStrategy(vipDiscount);
System.out.println(discountContext.calculate(100)); // 50.0
}
}
策略模式将算法的实现与使用分离开来,使得实现算法的每个类都具有很好的灵活性和可扩展性。同时,策略模式使得增加新的算法变得方便简单。