我们有A,B,C,D四个不同的类别,在最开始的时候只有三个类别,并且两个类别是做同样的事:
1 function categoryHandle(category) { 2 if(category !== 'A') { 3 console.log('B, C'); 4 } else { 5 console.log('A'); 6 } 7 }
接着,出现了类别D——它与B和C相比来说,有一个不同的任务,而它又和B和C有一个相同的任务。于是,代码变成了这样。
function categoryHandle(category) { if(category !== 'A') { if(category === 'D') { console.log('D'); } else { console.log('B,C'); } console.log('B, C ,D') } else { console.log('A'); } }
然后
function categoryHandle(category) { if(category === 'A') { console.log('A'); } else if (category === 'B'){ console.log('B'); } else if (category === 'C'){ console.log('D'); }else if (category === 'D'){ console.log('D'); } }
当然用switch语句来做,但是我真不想这样想。接着,JavaScript的奇技淫巧来完成这个工作:
function categoryHandleRefactor(category) { var categoryAction = { 'A': { run: function () { console.log('A') } }, 'B': { run: function () { console.log('B') } }, 'C': { run: function () { console.log('C') } }, 'D': { run: function () { console.log('D') } } }; categoryAction[category].run(); }