was ist eine Singleton-Klasse? Kann es mir einzelne Instanz einer Klasse für zwei zugehörige Dienste laufen helfen?

StackOverflow https://stackoverflow.com/questions/1494642

Frage

Das klingt vielleicht kompliziert, aber ich werde fragen sowieso:

Ich arbeite mit einer Service A die Klasse verwendet X . Ich möchte einen anderen Dienst starten B , die verwendet Klassen A neben neuen Klassen.

Service A wird bereits ausgeführt. Ich habe einen Hot Deployment Service B .

Hier ist die eigentliche Frage - wird der Service B verwenden die gleiche Instanz der Klasse X oder eine separate Instanz. Wie kann ich Singletonklasse hier helfen?

War es hilfreich?

Lösung

Jeder Dienst wird in einem eigenen Betriebssystem (OS) Prozessbereich ausgeführt, und jeder Prozessraum hat seine eigene Klasseninstanzen ist. A „Singletons“ Klasse wird in der Regel statische Felder in einer Klasse codiert ist, die der Code des Prozessraum lokal sein würde lief, also nein, sie werden nicht Singletons teilen. Jeder wird seine eigene Instanz erhalten.

Sie können tun, was Sie versuchen, aber zu tun, einige externe gemeinsamen Synchronisationsverfahren, (zum Beispiel ein Singleton über was auch immer der Java equivilent auszusetzen ist .NET Remoting (oder WCF) - ein Netzwerk-Endpunkt ausgesetzt, die ist codiert ein Singleton zu verwenden, und beide Ihre Dienste „eine Verbindung zu“ haben und verwenden, die remote-Zugriff Singleton)

Andere Tipps

Ich bin nicht vertraut mit den Details wie Java Web Service ausgeführt werden, aber wenn sie beide in der gleichen VM laufen, dann denke ich, die Klassen für alle Anwendungen in den VM und statischen Feldern daher geteilt werden würde geteilt werden würden . Da das Singleton-Muster in der Regel durch das Anbringen eine einzige Instanz zu einem statischen Elemente erreicht wird, würde die Singleton geteilt werden.

Dies basiert auf: The Clean Code Talk - "Globalen Staat und Singletons"

Es soll möglich sein, sie durch das Schreiben zwei einfachen Web-Service zu testen. Eine, die etwas zu dem Singleton, wie ein Flag der Fall ist, und eine andere, die für sie überprüft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top