Sollte eine Service-Klasse singleton in Java sein?

8

Beim Entwerfen einer Serviceklasse sollte es Singleton in Java sein? Im Allgemeinen wird DAO Singleton gemacht, sollte also die aufrufende Dienstklasse auch Singleton gemacht werden?

    
Jyotirup 29.12.2011, 16:04
quelle

3 Antworten

3

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.

    
DwB 29.12.2011, 16:21
quelle
6

IMHO ja, Dienste sollten keinen Zustand halten und sollten deshalb Singleton gemacht werden.

    
Stijn Geukens 29.12.2011 16:08
quelle
0

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.

    
Stas Kurilin 29.12.2011 16:30
quelle

Tags und Links