Design Patterns
Strategy pattern
https://en.wikipedia.org/wiki/Strategy_pattern
State pattern
https://en.wikipedia.org/wiki/State_pattern
Null object pattern
https://en.wikipedia.org/wiki/Null_object_pattern
class Dog {
sound() {
return 'bark';
}
}
class NullAnimal {
sound() {
return null;
}
}
function getAnimal(type) {
return type === 'dog' ? new Dog() : new NullAnimal();
}
['dog', null].map((animal) => getAnimal(animal).sound());
// Returns ["bark", null]