Antwort an „Rolf B“ verfassen

Hallo Peter,

der Singleton ist das einzelne Objekt, nicht der Wert, der im Singleton-Objekt geführt wird.

Der Begriff Subklasse ist übrigens irreführend, dabei denkt man in der OOP eher an Vererbung. Das ist hier nicht der Fall. Mir fällt aber auf die Schnelle auch kein allgemeingültiger knackiger Begriff ein. Kindklasse?

Generell: kann man so machen, muss man aber nicht.

Wenn MyClass tatsächlich verantwortlich ist für die Erzeugung von SubClass-Instanzen, dann sind die beiden eng verzahnt und es wäre legitim, dass das MyClass-Objekt sich selbst an den Konstruktor von SubClass übergibt. Die Aufgabe, den Zähler zu führen (oder das zu mutierende Dings) könnte dann in MyClass liegen und einfach Teil des Eltern-Kind-Kommunikationsprotokolls sein.

class MyClass {
   #commonValue;
   #children;

   commonValue get() {
      return this.#commomValue;
   }
   commonValue set(newValue) {
      this.#commonValue = newValue;
      // Add common logic here
   }

   createChildren(n) {
      this.#children = new Array(n);  // push nur nehmen wenn nötig!
      for (let i=0; i<n; i++)
         this.#children[i] = new SubClass(this);
   }
}

class SubClass {
   #parent;
   constructor(parent) {
      this.#parent = parent;
   }

   doSomething() {
      this.#parent.commonValue = "drölf";
   }
}

Wie auch immer der BusinessCase genau dazu aussieht. Jedenfalls ist für eine so enge Koppelung ein separates Counter-Objekt nicht zwingend. Eine best practice kann man, ohne die konkrete Praxis zu kennen, schlecht benennen. Wie ich schon sagte: da ist vieles kontextabhängig.

Wenn Du Methoden hast, die im Prinzip nichts weiter tun als einen Wert setzen, kannst Du wie bei commonValue gezeigt auch Propertygetter und -setter verwenden.

Rolf

--
sumpsi - posui - obstruxi
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
?0

Vorschau

Schlagwort-Vorschläge

klicken, um das Schlagwort hinzuzufügen
  • keine Vorschläge verfügbar

ausgewählte Schlagwörter

klicken, um ein ausgewähltes Schlagwort zu entfernen
  • programmierstil
  • programmiertechnik

Die Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.