策略模式

策略模式可以帮助我们更好地组织和处理复杂的业务逻辑。通过将不同的算法或逻辑封装成独立的策略对象,使得这些策略对象可以在运行时根据需要进行切换或替换,从而实现灵活性和可扩展性。

// 定义支付接口
class PaymentStrategy {
  pay(amount) {
    throw new Error("This method must be overridden!");
  }
}

// 定义支付宝支付策略
class AlipayPaymentStrategy extends PaymentStrategy {
  pay(amount) {
    console.log(`使用支付宝支付 ${amount}`);
  }
}

// 定义微信支付策略
class WeChatPaymentStrategy extends PaymentStrategy {
  pay(amount) {
    console.log(`使用微信支付 ${amount}`);
  }
}

// 定义上下文,用于设置支付策略
class PaymentContext {
  constructor(paymentStrategy) {
    this.paymentStrategy = paymentStrategy;
  }

  setPaymentStrategy(paymentStrategy) {
    this.paymentStrategy = paymentStrategy;
  }

  pay(amount) {
    this.paymentStrategy.pay(amount);
  }
}

// 示例代码
// 创建支付宝支付策略
const alipayStrategy = new AlipayPaymentStrategy();
// 创建微信支付策略
const wechatStrategy = new WeChatPaymentStrategy();

// 创建上下文对象,设置支付宝支付策略
const paymentContext = new PaymentContext(alipayStrategy);
paymentContext.pay(100); // 输出:使用支付宝支付 100 元

// 切换支付策略为微信支付
paymentContext.setPaymentStrategy(wechatStrategy);
paymentContext.pay(50); // 输出:使用微信支付 50 元
上次更新 2026/6/23 11:49:15
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.8