Как соотносятся фабрики и модели? - PullRequest
7 голосов
/ 05 февраля 2010

Я только что читал ветку о SO, в которой обсуждались преимущества Singleton и Static Classes.

Некоторые люди упоминали, что модель X оказалась скорее "фабричной", чем синглтоновой "моделью".

В чем различия между «фабрикой» и «схемой проектирования»?

Ответы [ 9 ]

9 голосов
/ 05 февраля 2010

«Фабрика» - это особый шаблон проектирования: http://en.wikipedia.org/wiki/Factory_method_pattern

Точно так же «синглтон» - это еще и шаблон проектирования: http://en.wikipedia.org/wiki/Singleton_pattern

1 голос
/ 05 февраля 2010

«фабрика», а не синглтон 'Шаблон'

Позвольте мне дополнить это и правильно поставить кавычки:

«фабричный образец», а не «синглтон»

Оба являются шаблонами проектирования .

1 голос
/ 05 февраля 2010

Фабрики и Синглтоны являются одними из многих шаблонов проектирования.

Заводской шаблон может быть реализован как одноэлементный шаблон, который создает объекты. Фабрика также может быть экземпляром класса и, следовательно, не единичным. Аналогично, синглтон может быть фабрикой, но это может быть и что-то еще, например, менеджер глобальных настроек или реестр событий.

0 голосов
/ 05 февраля 2010

Множество ответов, но, похоже, ни один из них не дает четкого различия между двумя моделями. Позвольте мне попробовать и посмотреть, не могу ли я еще больше запутать вопрос.

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

Фабрика используется для создания синглетонов и в других ситуациях. Его можно использовать для замены «нового» во многих случаях. Одним из преимуществ является то, что вы можете написать свою фабрику, чтобы тип возвращаемого объекта был «Set». Таким образом, ваша инфраструктура тестирования может «установить» фиктивный объект вместо реального - и тогда вся остальная часть вашей системы будет использовать фиктивный объект.

Другим случаем может быть фабричная оценка по параметрам, тип которых должен возвращаться, или по данным (возможно, XML). Они также используются для внедрения Dependency Injection, когда фабрика смотрит на то, что вам нужно, и строит цепочки объектов для удовлетворения этих потребностей.

0 голосов
/ 05 февраля 2010

Фабрика - это тип шаблона проектирования. По сути, фабрика возвращает класс, зависящий от потребностей вызывающего класса. Все классы, возвращаемые фабрикой, должны использовать один и тот же интерфейс, чтобы вы могли вызывать для них одни и те же открытые методы (хотя то, как каждый класс реализует метод, может отличаться).

Вот хорошая ссылка http://en.wikipedia.org/wiki/Factory_method_pattern

0 голосов
/ 05 февраля 2010

фабрика - это шаблон проектирования :-), как и Singleton. Можно утверждать, что синглтон - это своего рода фабрика. При необходимости он создает объект и использует установленную политику сцепления (которая всегда возвращает один и тот же объект после его создания), но это единообразно и, как правило, просто сбивает с толку в большинстве дискуссий о структуре

0 голосов
/ 05 февраля 2010

«Фабрика» - это тип шаблона проектирования. Вы можете увидеть несколько примеров абстрактной фабрики здесь или фабричного метода здесь в зависимости от контекста

0 голосов
/ 05 февраля 2010

Вы немного ошиблись. «Фабрика» также является паттерном и контрастирует здесь с «Синглтоном».

0 голосов
/ 05 февраля 2010

A Factory - это Design Pattern - не наоборот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...