Was ist der Unterschied zwischen Singleton und Registry Design Pattern?

8

Ich habe etwas Verwirrung zwischen den beiden.

Singleton
Überprüfen Sie, ob die Instanz vorhanden ist, geben Sie sie zurück, oder erstellen Sie eine neue Instanz.

Registrierung
Überprüfen Sie, ob die Instanz vorhanden ist, geben Sie sie zurück, oder erstellen Sie eine neue und speichern Sie sie.

Was ist der Unterschied zwischen ihnen?

    
Lion King 24.05.2013, 22:20
quelle

4 Antworten

8

Bei beiden geht es um Instanzkontrolle. Der Unterschied besteht darin, dass Singleton nur eine Instanz einer bestimmten Klasse zulässt, während die Registry eine 1-1-Zuordnung von Schlüsseln zu Instanzen enthält. In der Regel ist (oder repräsentiert) der Schlüssel eine Klasse und der Wert ist eine Instanz dieser Klasse.

Zum Beispiel enthält das Code Igniter-Framework eine Registrierung mit einer Instanz jeder Bibliothek / jedes Modells / Controllers / Helfers, die Sie jedesmal laden und zurückgeben.

    
LexLythius 24.05.2013, 22:24
quelle
1

Eine Registry unterscheidet sich dadurch, dass sie hauptsächlich dazu dient, zu assoziierten Objekten zu navigieren. Siehe Martin Fowler .

    
ashatch 24.05.2013 22:25
quelle
1

Registrierungsdefinition: Wenn Sie ein Objekt suchen möchten, beginnen Sie normalerweise mit einem anderen Objekt, das eine Assoziation zu ihm hat, und verwenden Sie die Assoziation, um zu diesem Objekt zu navigieren. Wenn Sie also alle Aufträge für einen Kunden finden möchten, beginnen Sie mit dem Kundenobjekt und verwenden eine Methode, um die Aufträge zu erhalten. In einigen Fällen haben Sie jedoch kein geeignetes Objekt, mit dem Sie beginnen können. Sie kennen vielleicht die ID-Nummer des Kunden, haben aber keine Referenz. In diesem Fall brauchen Sie eine Art Lookup-Methode - einen Finder - aber die Frage bleibt: Wie gelangen Sie zum Finder?

Eine Registry ist im Wesentlichen ein globales Objekt, oder zumindest sieht es wie eins aus - auch wenn es nicht so global ist wie es erscheint .

Singleton Definition: Manchmal ist es wichtig, nur eine Instanz für eine Klasse zu haben. Zum Beispiel sollte in einem System nur ein Fenstermanager (oder nur ein Dateisystem oder nur ein Druckspooler) vorhanden sein. In der Regel werden Singletons für die zentrale Verwaltung interner oder externer Ressourcen verwendet und sie bieten einen globalen Zugangspunkt zu selbst .

Basierend auf diesen Definitionen ist ihre Verwendung völlig unterschiedlich.

    
Rashad 24.05.2013 22:32
quelle
0

Der Hauptunterschied zwischen Registrierung und Singleton besteht darin, dass Singleton es uns erlaubt, eine einzelne Instanz einer Klasse gleichzeitig zu erstellen, während die Registrierung es uns erlaubt, mehrere Instanzen derselben Klasse zu erstellen.

    
Wasim Abbas 29.04.2015 13:30
quelle