Zum Inhalt springen

[C#] Singleton Pattern in einem Interface vorgeben


Empfohlene Beiträge

Geschrieben

Hallo zusammen!

Ich habe eine Klasse mit Hilfe des Singleton Patterns implementiert und möchte diese Klasse austauschbar machen.

Daher ist mir relativ schnell die Idee gekommen, mit einem Interface die Schnittstellen vorzugeben.

Aber wie kann man denn einer ableitenden Klasse vorschreiben, das Singleton Pattern zu benutzen? Die anderen Klassen holen sich über die (zwingend) statische Methode getInstance() eine Instanz der betreffenden Klasse, aber wie ich gelesen habe sind statische Methoden in Interfaces gar nicht möglich. :upps

Habt ihr eine Idee, wie ich trotzdem das Singleton Pattern vorschreiben kann?

Gruß, Sturm

PS: Bitte keine Antworten wie "Singleton Pattern ist Müll", solange ihr keine bessere Alternative vorschlagt... ;)

Geschrieben (bearbeitet)

Das Singleton-Pattern kannst Du nicht in einem Interface abbilden, da Du ja per Singleton-Pattern die Konstruktoren privatisierst. Das kannst Du aber leider per Interface nicht verhindern, da Du ja dort die Konstruktoren der abgeleitetetn Klassen nicht kennst / nicht kennen sollst.

Eine andere Möglichkeit wäre, das ganze per Factory-Pattern oder (wenn komplex) per Builder-Pattern zu erledigen.

Die Factory liefert Dir dann ein Interface zurück, tatsächlich allerdings eine implementierende Klasse per Parametergabe unterschieden.

Interface object = Factory.Singleton().getInstanz(Auswahlparameter);

In der Factory-Implemtierung kannst Du dann recht einfach über ne Map z.B. die Instanzen pro Auswahlparameter verwalten, so dass nur einmal eine Instanz pro Auswahlparameter erzeugt wird.

Das Interface selber ist dann public und deklariert alle bekannten Funktionalitäten. Die tatsächlichen Implementierungs-Klassen sind dann protected, damit von außen nicht sichtbar.

Bearbeitet von VaNaTiC
Geschrieben

"Singleton Pattern ist Müll" :P

In welchem Zusammenhang verwendest du das Pattern?

Sobald eine Klasse abgeleitet werden kann, ist ein Singleton definitiv ein Designfehler.

Geschrieben

Factory-Pattern und Builder-Pattern sind mir bis jetzt noch kein Begriff, in dieses Thema muss ich mich erstmal einlesen... aber danke für den Tip! :)

Zur Frage "In welchem Zusammenhang verwendest du das Pattern?"

Ich übergebe meinem Objekt Daten für ein Bild auf dem Bildschirm. Diese Daten wertet es aus und visualisiert sie.

Da nur ein Bild auf einmal angezeigt werden kann, muss von diesem Objekt niemals ein zweites erschaffen werden...

Eine Spezialisierung dieser Klasse ist nicht vorgesehen, sofern du das mit Ableitung meinst... :)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...