У меня очень сложное время для написания модулей, которые состоят обычно из 3-5 небольших модулей или классов. Проблема возникает, когда эти вспомогательные компоненты необходимо расширить, но основной модуль уже создает и реализует свои базовые версии.ООП для многокомпонентных классов
Пример
// main module design
class Car {
constructor() {
this.horn = new Horn();
this.horn.on('honk', function() {
console.log('honked');
})
}
}
class Horn {
constructor() {
this.sound = 'hornA.wav'
}
}
// extended module design
class RaceCar extends Car {
constructor() {
super();
this.horn = new RaceHorn();
// event handler is now missing
}
}
class RaceHorn extends Horn {
constructor() {
super();
this.horn = 'hornB.wav'
}
}
Это действительно очень упрощенный пример, в то время как мои истинные вопросы включают модули с большим количеством компонентов и более требований установки. Я понимаю, что могу поместить вещи в другую init
или setup
или аналогичную функцию, но мне кажется, что я делаю что-то неправильно по своей сути.
Вы не должны использовать наследование как среднее для настройки. RaceCar действительно должен быть экземпляром Car, сконфигурированным с другим рогом, и все это делается на заводе. – plalx
Вам, вероятно, даже не нужны разные рожки, просто дайте ему параметр для воспроизведения звукового файла. – Bergi