策略模式
推荐阅读:策略设计模式
介绍
假设有一个支付系统,需要支持使用不同的支付方式(策略),我们可以抽象出一个策略接口,然后定义具体的策略类来实现该接口。
策略接口:
public interface PaymentStrategy {
    void pay(int amount);
}
具体策略:
public class CreditCardPayment implements PaymentStrategy {
    public void pay(int amount) {
        System.out.println("Using Credit Card to pay: " + amount);
    }
}
public class PayPalPayment implements PaymentStrategy {
    public void pay(int amount) {
        System.out.println("Using PayPal to pay: " + amount);
    }
}
使用策略模式,我们可以轻松地切换支付方式,而无需修改其他代码。方法就是创建一个上下文对象,并将不同的策略对象注入到上下文中:
上下文:
public class ShoppingCart {
    private PaymentStrategy paymentStrategy;
    public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
        this.paymentStrategy = paymentStrategy;
    }
    public void checkout(int amount) {
        paymentStrategy.pay(amount);
    }
}
而客户端代码只需要调用上下文对象的 checkout 方法,并根据需要设置不同的策略对象即可:
ShoppingCart cart = new ShoppingCart();
cart.setPaymentStrategy(new CreditCardPayment());
cart.checkout(100); // Using Credit Card to pay: 100
cart.setPaymentStrategy(new PayPalPayment());
cart.checkout(200); // Using PayPal to pay: 200
这样不仅能够轻松地切换支付方式,而且如果需要加入新的支付方式,只需创建新的策略对象并注入到上下文中,而不需要修改其他代码。
                
            
        
浙公网安备 33010602011771号