简述
在项目开发过程中,经常会接触到接口返回特定的 code 值,然后由前端根据不同的 code 值,在页面上显示对应的文案信息。通常我们会采取 if 或者 switch 的方案去处理这中情况,下面我们先来看下这两种方案的代码。
if 方案
let msg = '';if (res.code === '11001') {msg = '微信支付购买';} else if (res.code === '11008') {msg = '余额购买';} else if (res.code === '11011') {msg = '退款到余额';} else if (res.code === '11012') {msg = '优惠卷兑换';} else if (res.code === '11013') {msg = '积分兑换';} else if (res.code === '11014') {msg = '赠送课程';}
switch 方案
let msg = '';switch (res.code) {case '11001':msg = '微信支付购买';break;case '11008':msg = '余额购买';break;case '11011':msg = '退款到余额';break;case '11012':msg = '优惠卷兑换';break;case '11013':msg = '积分兑换';break;case '11014':msg = '赠送课程';break;default:break;}
会发现上述两种方案的代码量多,可维护性也比较差。要优化这一类的代码,可以采用策略模式实现。
优化后的方案
const messages = {11001: '微信支付购买',11008: '余额购买',11011: '退款到余额',11012: '优惠卷兑换',11013: '积分兑换',11014: '赠送课程',};const msg = messages[res.code];
