Sturm Geschrieben 24. Juni 2009 Geschrieben 24. Juni 2009 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...
VaNaTiC Geschrieben 24. Juni 2009 Geschrieben 24. Juni 2009 (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 24. Juni 2009 von VaNaTiC
TDM Geschrieben 24. Juni 2009 Geschrieben 24. Juni 2009 "Singleton Pattern ist Müll" In welchem Zusammenhang verwendest du das Pattern? Sobald eine Klasse abgeleitet werden kann, ist ein Singleton definitiv ein Designfehler.
Sturm Geschrieben 24. Juni 2009 Autor Geschrieben 24. Juni 2009 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...
VaNaTiC Geschrieben 24. Juni 2009 Geschrieben 24. Juni 2009 Bezüglich Patterns kann ich das hier empfehlen: Bruce Eckel's MindView, Inc: Thinking in Patterns with Java Von Java auf C# kannst sicherlich abstrahieren
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden