Ich habe es sehr schwer, Module zu schreiben, die typischerweise aus 3-5 kleineren Modulen oder Klassen bestehen. Das Problem tritt auf, wenn diese Unterkomponenten erweitert werden müssen, aber das Hauptmodul bereits ihre Basisversionen erstellt und implementiert.OOP für Mehrkomponenten-Klassen
Beispiel
// 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'
}
}
Dies ist in der Tat ein sehr vereinfachtes Beispiel, während meine wahren Probleme Module mit mehr Komponenten und Einrichtungsanforderungen beinhalten. Ich verstehe, dass ich Dinge in eine andere init
oder setup
oder ähnliche Funktion setzen kann, aber für mich scheint es, als würde ich etwas falsch von Natur aus tun.
weiter zu modularisieren. Sie sollten die Vererbung nicht als Mittel zum Konfigurieren verwenden. RaceCar sollte eigentlich nur eine Car-Instanz sein, die mit einer anderen Hupe konfiguriert ist, und das alles in einer Fabrik. – plalx
Sie brauchen wahrscheinlich nicht einmal verschiedene Hörner, geben Sie einfach einen Parameter für den Sound-Dateinamen zu spielen. – Bergi