策略

在许多情况下,可以在 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'

在最后一种情况下,我们的默认函数处理任何丢失的动物。