Java策略模式
战略模式是一种行为设计模式,可以让你在运行时动态地改变对象的行为。在Java中,动态替换战略的行为可以通过接口和实现类来实现。
第一,战略模式的基础结构
战略模式有三个重要部分:环境、战略界面和具体战略。环境类接收战略对象,并将执行过程委托给战略对象。战略界面定义了公共操作,具体战略是实现战略界面。
public interface Strategy { void strategyMethod(); } public class ConcreteStrategyA implements Strategy { public void strategyMethod() { System.out.println("执行策略A"); } } public class ConcreteStrategyB implements Strategy { public void strategyMethod() { System.out.println("执行策略B"); } } public class Context { private Strategy strategy; public Context(Strategy strategy) { this.strategy = strategy; } public void contextMethod() { strategy.strategyMethod(); } }
第二,战略模式的应用实例
以下是一个使用策略模式的简单例子。支付环境类接收支付策略对象,具体支付方式由选择的支付策略决定:
public interface PaymentStrategy { void pay(int amount); } public class CreditCardStrategy implements PaymentStrategy { public void pay(int amount) { System.out.println("Paid " + amount + " using Credit Card"); } } public class PaypalStrategy implements PaymentStrategy { public void pay(int amount) { System.out.println("Paid " + amount + " using Paypal"); } } public class ShoppingCart { private PaymentStrategy paymentStrategy; public ShoppingCart(PaymentStrategy paymentStrategy) { this.paymentStrategy = paymentStrategy; } public void checkout(int amount) { paymentStrategy.pay(amount); } }
第三,战略模式的优势
战略模式的主要优点是它能使你在运行过程中改变对象的行为。并且您可以独立于其它代码来定义新的策略。
ShoppingCart cart = new ShoppingCart(new CreditCardStrategy()); cart.checkout(100); cart = new ShoppingCart(new PaypalStrategy()); cart.checkout(200);
上述代码反映了运行时动态切换策略和扩展策略的能力。