Hier noch eine Ergänzung.
Ich hatte ja vor kurzem eine Diskussion mit Klassen angestoßen. Der Ansatz würde damit auch nicht direkt funktionieren. Das Problem ist ein bischen, dass die Adapter-Klasse die Ableitung von utils.Adapter hat, dadurch müsste man bei dem Ansatz die anderen Klassen dann auch ableiten (und im constructor super verwenden), was glaub blöd war.
Ich fänds gut, wenn die Adapter-Klasse einfach nur Basics enthält und man seinen "Kram" dann in eigene Klassen auslagert, aber z.B. über eine vorgegebene Helferklasse oder so Zugriff auf die Objekte in der Adapter-Klasse (Config, Log) hätte
Damit wären Updates in der ADapter-Klasse einfach und man könnte die Helfer-Klasse vlt. auch zentral bereitstellen, z.B. mit Error-Handling, Sentry, ...
Könnte man natürlich auch direkt in utils.Adapter oder so packen
// mein-modul.js module.exports = function (adapter) { return { methode1() { adapter.log("1"); }, // ... } } // ------- // main.js let meinModul; class Adapter extends ... { constructor() { meinModul = require("mein-modul.js")(this); // oder alternativ als Instanz-Variable speichern } }Ein klassisches Beispiel wie man sowas konventionell macht wären z.B. factory-Methoden:
Die Vererbung zu missbrauchen, nur um Zugriff auf die Instanz zu haben ist nicht so ganz der JavaScript-Style.
// mein-modul.js class MeineKlasse { constructor(adapter) { this.adapter = adapter; } methode1() { this.adapter.log.info('1'); } // ... } module.exports = MeineKlasse; // ------- // main.js const MeinModul = require('./lib/mein-modul.js'); class Adapter extends ... { constructor() { meinModul = new MeinModul(this); } }Spricht was dagegen, stattdessen mit ner Klasse zu arbeiten? Oder ist das nur Geschmackssache? Ergebnis hier im Beispiel ja das gleiche. Oder bläht eine Klasse hier unnötig was auf?
Geht auch
Ist ein bisschen Geschmackssache, bzw. Gewohnheit von Programmiersprachen, wo halt alles in Klassen sein muss.In meinem Gedankenmodell sind Klassen für Dinge...
von denen es mehrere Instanzen geben wird oder wo die Vererbung gewinnbringend eingesetzt wird oder die ich als "Dinge" versteheFür Helfer (insbesondere bunt zusammengewürfelte) passt es nicht so in mein Gedankenmodell, weil in der Node.js-Runtime auch (fast) alle Methoden alleinstehend importiert werden.
Im Endeffekt sind Klassen aber auch nur Funktionen, die hinter etwas Syntax versteckt sind