策略
在许多情况下,可以在 Javascript 中使用策略模式来替换 switch 语句。当条件数量动态或非常大时,它尤其有用。它允许每个条件的代码独立且可单独测试。
策略对象是一个简单的具有多个功能的对象,代表每个独立的条件。例:
const AnimalSays = {
dog () {
return 'woof';
},
cat () {
return 'meow';
},
lion () {
return 'roar';
},
// ... other animals
default () {
return 'moo';
}
};
上述对象可以使用如下:
function makeAnimalSpeak (animal) {
// Match the animal by type
const speak = AnimalSays[animal] || AnimalSays.default;
console.log(animal + ' says ' + speak());
}
结果:
makeAnimalSpeak('dog') // => 'dog says woof'
makeAnimalSpeak('cat') // => 'cat says meow'
makeAnimalSpeak('lion') // => 'lion says roar'
makeAnimalSpeak('snake') // => 'snake says moo'
在最后一种情况下,我们的默认函数处理任何丢失的动物。