面试题答案
一键面试- 定义支付策略接口:
public interface PaymentStrategy { void pay(double amount); }
- 实现具体支付策略类:
- 支付宝支付策略:
public class AliPayStrategy implements PaymentStrategy { @Override public void pay(double amount) { System.out.println("使用支付宝支付:" + amount + "元"); } }
- 微信支付策略:
public class WeChatPayStrategy implements PaymentStrategy { @Override public void pay(double amount) { System.out.println("使用微信支付:" + amount + "元"); } }
- 订单类中使用策略模式:
public class Order { private PaymentStrategy paymentStrategy; public Order(PaymentStrategy paymentStrategy) { this.paymentStrategy = paymentStrategy; } public void payOrder(double amount) { paymentStrategy.pay(amount); } }
- 客户端使用示例:
public class Client { public static void main(String[] args) { // 使用支付宝支付 Order aliPayOrder = new Order(new AliPayStrategy()); aliPayOrder.payOrder(100.0); // 使用微信支付 Order weChatPayOrder = new Order(new WeChatPayStrategy()); weChatPayOrder.payOrder(200.0); } }
在上述代码中,PaymentStrategy
接口定义了支付的抽象方法 pay
。AliPayStrategy
和 WeChatPayStrategy
类实现了该接口,提供了具体的支付逻辑,这就是多态的体现。Order
类通过持有 PaymentStrategy
接口类型的对象,在运行时可以根据传入的具体策略对象(支付宝支付策略或微信支付策略),灵活地切换和复用不同的支付算法,实现了策略模式中不同算法的灵活切换与管理。