目录
?
策略模式是一种行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。策略模式使得算法可以独立于客户端而变化,从而使客户端可以选择不同的算法,而不会影响到客户端的代码。
Context(上下文): 维护一个对策略对象的引用,并在运行时切换不同的策略。
Strategy(策略接口): 定义了所有支持的算法的公共接口。通常是一个接口或抽象类。
ConcreteStrategy(具体策略): 实现了策略接口,提供具体的算法实现。
考虑一个支付系统,根据不同的支付方式采用不同的支付策略。策略模式可以使得新增支付方式时不必修改现有代码,只需添加新的支付策略即可。
// Strategy 接口
public interface PaymentStrategy {
void pay(int amount);
}
步骤二:实现具体的策略
// ConcreteStrategy1
public class CreditCardPayment implements PaymentStrategy {
@Override
public void pay(int amount) {
System.out.println("Paid " + amount + " via Credit Card.");
}
}
// ConcreteStrategy2
public class PayPalPayment implements PaymentStrategy {
@Override
public void pay(int amount) {
System.out.println("Paid " + amount + " via PayPal.");
}
}
步骤三:定义上下文类?
// Context
public class ShoppingCart {
private PaymentStrategy paymentStrategy;
public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
this.paymentStrategy = paymentStrategy;
}
public void checkout(int amount) {
paymentStrategy.pay(amount);
}
}
public class Client {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
// 选择支付策略
PaymentStrategy creditCardPayment = new CreditCardPayment();
PaymentStrategy payPalPayment = new PayPalPayment();
// 设置支付策略
cart.setPaymentStrategy(creditCardPayment);
// 进行支付
cart.checkout(100);
// 切换支付策略
cart.setPaymentStrategy(payPalPayment);
// 进行支付
cart.checkout(150);
}
}
?
策略模式通过将算法封装在独立的策略类中,使得算法的变化不影响到使用算法的客户端。这种灵活性和可维护性使得策略模式在面对多种算法选择时非常有用,同时提高了代码的可扩展性。
什么是tomcat?tomcat是干什么用的?-CSDN博客
腾讯-轻量应用服务器centos7中宝塔安装MySQL8.0出现内存不足-CSDN博客Synchronized 优化-CSDN博客腾讯-轻量应用服务器centos7中宝塔安装MySQL8.0出现内存不足-CSDN博客
?
?
?