告别 if-else 地狱:如何用策略模式优雅重构代码

emer 发布于 阅读:79

在日常开发中,我们经常会遇到复杂的业务逻辑判断。比如,一个电商系统的支付模块,可能需要支持微信支付、支付宝、银联等多种渠道。新手往往会写出这样的代码:

function pay(type, amount) {
    if (type === 'wechat') {
        // 微信支付逻辑
    } else if (type === 'alipay') {
        // 支付宝支付逻辑
    } else if (type === 'unionpay') {
        // 银联支付逻辑
    }
    // ... 越来越多的 if-else
}

随着业务扩展,这个函数会变得越来越臃肿,难以维护且容易出错。这就是典型的“if-else 地狱”。
解决方案:策略模式
策略模式的核心思想是将不同的算法或逻辑封装成独立的类或函数,使它们可以互相替换。
重构后的代码可以这样写:

const strategies = {
    wechat: (amount) => console.log(`使用微信支付:${amount}元`),
    alipay: (amount) => console.log(`使用支付宝支付:${amount}元`),
    unionpay: (amount) => console.log(`使用银联支付:${amount}元`)
};

function pay(type, amount) {
    const strategy = strategies[type];
    if (strategy) {
        strategy(amount);
    } else {
        throw new Error('不支持的支付方式');
    }
}

通过这种重构,代码的可读性和扩展性得到了极大的提升。下次新增支付方式时,只需在 strategies 对象中添加一个新的键值对即可,完全不需要修改原有的逻辑判断代码。

收到1条评论
avatar
emlog 1 个月前
这是系统生成的演示评论