Singletons sind schlecht, wenn Sie sie entwickeln. Wenn Sie die Abhängigkeitsinjektion verwenden, sollte der DI-Container die Singleton-Natur Ihres Service-Objekts behandeln. Wenn Sie keine Abhängigkeitsinjektion verwenden, verwenden Sie eine statische Methode anstelle eines Singletons.
Klassisches Beispiel für schlecht:
%Vor%Bessere Umsetzung des oben genannten:
%Vor%Wenn Sie eine Serviceschnittstelle mit einer konkreten Implementierung haben, verwenden Sie ein Framework zum Einbetten von Abhängigkeiten, um die Implementierung zu injizieren (DI-Frameworks enthalten: spring und guice).
Bearbeiten: Wenn ich eine Feder verwende, würde ich den Singleton-Bereich (Standard) wählen.
IMHO ja, Dienste sollten keinen Zustand halten und sollten deshalb Singleton gemacht werden.
Nein
Eigentlich glaube ich, dass Sie sich beim Design nicht darum kümmern sollten. Das @DwB erwähnte DI Framework sollte diese Aufgabe übernehmen. Außerdem glaube ich, dass kein Anwendungsbereich ("Prototyp") Standard sein sollte und ich sehe nichts Schlechtes, wenn jemand es selbst erstellt. Auch dieses Problem kann durch Modularisierung und die Trennung von Service-Schnittstelle und Implementierung vereinfacht werden.
Tags und Links java design-patterns