策略

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

在最後一種情況下,我們的預設函式處理任何丟失的動物。