四、switch语句:天生就需要做N件事,但是可以将其放置在较低抽象层级,但是当出现新的类型时会违反“单一权责原则、开放闭合原则”,此时最好创建多态对象
//原文中:对于每个case分支进行单独处理,添加新类型不必修改原来的代码增加新的处理类即可
function getName(name){
switch(name){
case 'ming':
return new ClassMing(name);
case 'hu':
return new ClassHu(name);
case 'uzi':
return new ClassUzi(name);
default:
throw new ClassCommon(name);
}
}
//我更喜欢用另一种方法:修改只需要在对象里修改即可,且提高了函数的简洁性
const nameCollectionUtils = {
ming:new ClassMing('ming');
hu: new ClassHu('hu');
uzi: new ClassUzi('uzi');
}
function getName(name){
return nameCollectionUtils.hasOwn(name) ? nameCollectionUtils[name] : new ClassCommon(name)
}
复制代码