Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[C#] Singleton Pattern in einem Interface vorgeben

Empfohlene Antworten

Veröffentlicht

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... ;)

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

"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.

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... :)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.