2013-05-24 4 views
8

У меня есть путаница между ними.В чем разница между шаблоном проектирования Singleton и Registry

одноточечно
Проверьте, если экземпляр существует вернуть его, или создать новый.

Registry
Проверьте, если экземпляр существует вернуть его, или создать новый и сохранить его.

В чем разница между ними?

+1

Реестр реализует шаблон Singleton. –

+0

@JohnConde нет, это не так. Или в лизу не нужно. –

+0

Насколько я понимаю, реестр не позволяет создавать экземпляры. Цель состоит в том, чтобы знание того, как материал должен быть создан, может быть в другом месте, вдали от большинства клиентов реестра. То, с чем вы сравниваете, похоже, является комбинацией фабрики и реестра, в значительной степени нарушая цель реестра. – Stein

ответ

8

Оба относятся к управлению экземпляром. Разница заключается в том, что Singleton допускает только один экземпляр данного класса, тогда как в реестре содержится 1-1 карта ключей к экземплярам. Как правило, ключ является (или представляет) класс, а значение является экземпляром этого класса.

Например, Code Igniter framework содержит реестр с экземпляром каждой библиотеки/модели/контроллера/помощника, которую вы загружаете и возвращаете те же самые экземпляры каждый раз.

1

Реестр отличается тем, что его основная цель - позволить вам перемещаться по связанным объектам. См. Martin Fowler.

1

Определение реестра: если вы хотите найти объект, вы обычно начинаете с другого объекта, имеющего связь с ним, и используйте связь для перехода к нему. Таким образом, если вы хотите найти все заказы для клиента, вы начинаете с объекта клиента и используете для этого метод, чтобы получить заказы. Однако в некоторых случаях у вас не будет подходящего объекта для начала. Вы можете узнать идентификационный номер клиента, но не иметь ссылку. В этом случае вам нужен какой-то метод поиска - искатель, но остается вопрос: как вы добираетесь до искателя?

Реестр по существу является глобальным объектом, или, по крайней мере, он выглядит как один - даже если он не является глобальным, как он может appear.

Singleton Определение: Иногда важно иметь только один экземпляр для класса. Например, в системе должен быть только один диспетчер окон (или только файловая система или только диспетчер очереди печати). Обычно синглтоны используются для централизованного управления внутренними или внешними ресурсами и обеспечивают глобальную точку доступа к themselves.

Исходя из этих определений, их использование совершенно иное.

0

Главное отличие между реестром и одиночным тоном заключается в том, что singleton позволяет нам создавать один экземпляр класса за раз, тогда как реестр позволяет создавать несколько экземпляров одного и того же класса.

+0

не много нового по сравнению с принятым ответом, есть ;-) – kleopatra

Смежные вопросы