Я пытаюсь выяснить, существует ли лучшая практика инициализации членов класса производных классов в ES6 - в дочернем или родительском элементе и почему?
Например:
Опция 1:
class AbstractAnimal {
constructor() {
this.voice = null;
}
makeVoice() {
this.voice.make();
}
}
class Dog extends AbstractAnimal {
constructor() {
super();
this.voice = new Bark();
}
onSeeFriend() {
this.makeVoice();
}
}
Опция 2:
class AbstractAnimal {
constructor(voice) {
this.voice = voice;
}
makeVoice() {
this.voice.make();
}
}
class Dog extends AbstractAnimal {
constructor() {
super(new Bark());
}
onSeeFriend() {
this.makeVoice();
}
}
Очевидно, что в обоих методах есть свои плюсы и минусы.Первый вариант распространяет инициализацию членов вокруг, что усложняет его отслеживание.В то время как второй вариант будет раздувать все до одного места, но в итоге вы могли бы получить огромных конструкторов, принимающих множество аргументов.
Был бы признателен, если бы я услышал ваши мысли по этому поводу.Спасибо!