2013-05-24 14 views
8

Ich habe einige Verwirrung zwischen den beiden.Was ist der Unterschied zwischen Singleton und Registry Design Pattern

Singletons
Überprüfen Sie, ob die Instanz vorhanden zurückkehren oder eine neue erstellen.

Registry
Überprüfen Sie, ob die Instanz vorhanden zurückkehren oder eine neue erstellen und speichern.

Was ist der Unterschied zwischen ihnen?

+1

Registry implementiert das Singleton-Muster. –

+0

@JohnConde nein, tut es nicht. Oder zumindest nicht. –

+0

Soweit ich verstehe, erlaubt eine Registrierung nicht das Erstellen von Instanzen. Der Zweck ist, dass das Wissen darüber, wie Dinge erstellt werden sollen, anderswo sein kann, weg von den meisten Clients der Registrierung. Was Sie vergleichen, scheint eine Kombination aus einer Fabrik und einem Register zu sein, die den Zweck eines Registers weitgehend zunichte macht. – Stein

Antwort

8

Beide sind über Instanzsteuerung. 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, Code Igniter-Framework enthält eine Registrierung mit einer Instanz von jeder Bibliothek/Modell/Controller/Helfer Sie laden und die gleichen Instanzen jedes Mal zurück.

1

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

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 appear.

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 von internen oder externen Ressourcen verwendet und sie bieten einen globalen Zugangspunkt zu themselves.

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

0

Der Hauptunterschied zwischen Registrierung und Singleton ist, dass Singleton uns erlauben, eine einzelne Instanz einer Klasse zu einer Zeit zu erstellen, während Registrierung ermöglicht es uns, mehrere Instanzen der gleichen Klasse zu erstellen.

+0

nicht viel neues im Vergleich zu der angenommenen Antwort, ist da ;-) – kleopatra

Verwandte Themen