2013-05-24 6 views
8

Mam pewne zamieszanie między tymi dwoma.Jaka jest różnica między wzorem Singleton a wzorcem rejestracji

Singleton
Sprawdź, czy instancja istnieje zwrócić go lub utworzyć nową.

Registry
Sprawdź, czy instancja istnieje zwrócić go, lub utworzyć nowy i przechowywać go.

Jaka jest różnica między nimi?

+1

Rejestru implementuje wzór Singleton. –

+0

@JohnConde nie, nie ma. Lub w Leas nie musi. –

+0

O ile rozumiem, rejestr nie zezwala na tworzenie instancji. Celem jest to, że wiedza o tym, jak należy tworzyć rzeczy, może znajdować się gdzie indziej, z dala od większości klientów rejestru. To, z czym porównujesz, wydaje się być połączeniem fabryki i rejestru, w dużej mierze pokonującego cel rejestru. – Stein

Odpowiedz

8

Obie dotyczą kontroli instancji. Różnica polega na tym, że Singleton zezwala na tylko jedną instancję danej klasy, podczas gdy Rejestr przechowuje mapę instancji od 1 do 1. Zazwyczaj klucz jest (lub reprezentuje) klasę, a wartość jest instancją tej klasy.

Na przykład struktura Code Igniter utrzymuje rejestr z instancją każdej biblioteki/modelu/kontrolera/pomocnika, które ładuje się i zwraca te same instancje za każdym razem.

1

Rejestr różni się tym, że jego głównym celem jest umożliwienie nawigacji do powiązanych obiektów. Zobacz Martin Fowler.

1

Definicja rejestru: Jeśli chcesz znaleźć obiekt, który zwykle zaczynasz od innego obiektu, który ma z nim powiązanie, skorzystaj z powiązania, aby przejść do niego. Tak więc, jeśli chcesz znaleźć wszystkie zamówienia dla klienta, zacznij od obiektu klienta i użyj metody, aby uzyskać zamówienia. Jednak w niektórych przypadkach na początku nie będziesz mieć odpowiedniego obiektu. Możesz znać numer identyfikacyjny klienta, ale nie możesz podać numeru referencyjnego. W takim przypadku potrzebujesz jakiejś metody wyszukiwania - wyszukiwarki - ale pozostaje pytanie: jak dotrzeć do wyszukiwarki?

Rejestr jest zasadniczo obiektem globalnym, a przynajmniej wygląda jak jeden - nawet jeśli nie jest tak globalny, jak może być appear.

Definicja singletona: Czasami ważne jest, aby mieć tylko jedną instancję dla klasy. Na przykład w systemie powinien być tylko jeden menedżer okien (lub tylko system plików lub tylko bufor wydruku). Zwykle pojedynczo używane są do scentralizowanego zarządzania zasobami wewnętrznymi lub zewnętrznymi i zapewniają globalny punkt dostępu do themselves.

Na podstawie tych definicji ich użycie jest zupełnie inne.

0

Główna różnica między rejestrem i singletonem polega na tym, że singleton pozwala nam tworzyć pojedynczą instancję klasy na raz, podczas gdy rejestr pozwala nam tworzyć wiele instancji tej samej klasy.

+0

niewiele nowych w porównaniu do zaakceptowanej odpowiedzi, jest tam ;-) – kleopatra

Powiązane problemy