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... Zitieren
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 Zitieren
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. Zitieren
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... Zitieren
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 Zitieren
Empfohlene Beiträge
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.