策略模式
策略模式可以帮助我们更好地组织和处理复杂的业务逻辑。通过将不同的算法或逻辑封装成独立的策略对象,使得这些策略对象可以在运行时根据需要进行切换或替换,从而实现灵活性和可扩展性。
// 定义支付接口
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 元
Powered by Waline v2.15.8