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.
Registry implementiert das Singleton-Muster. –
@JohnConde nein, tut es nicht. Oder zumindest nicht. –
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