Синглтонская фабрика для разбора сообщений - PullRequest
0 голосов
/ 23 января 2012

Мы работаем над приложением, которое обрабатывает различные XML-сообщения и загружает их в хранилище данных. Один из разработчиков, с которым я работаю, создал Singleton Factory, используя отражение для создания экземпляра соответствующего подкласса сообщений. Мой вопрос заключается в использовании синглтона для фабрики ... (Использование того же самого для построения объекта SqlCommand необходимо передать в БД). Фабрика, безусловно, имеет здесь смысл: та часть, о которой я размышляю, - это использование Singleton совместно с Фабрикой.

Я прочитал много публикаций, ответов на стеке и т. Д., И мне до сих пор не ясно, почему для этого сценария мы использовали бы этот шаблон (Singleton с заводским ... Я бы предположил, что просто используйте заводской шаблон ?).

Просто пытаясь лучше понять, как я понял, вы захотите использовать Singleton, когда хотите обеспечить один и только один интерфейс?

1 Ответ

1 голос
/ 23 января 2012

Синглтоны не обеспечивают единого интерфейса;они гарантируют единственный экземпляр объекта, который доступен глобально для других объектов.Пример того, где вы можете использовать синглтон, - это когда вам нужен счетчик, доступный из любого места приложения.Другими словами, состояние этого единственного объекта поддерживается в течение всего времени жизни приложения.

С другой стороны, фабрики используются для создания объекта, в котором вы не обязательно знаете точный тип возвращаемого класса.Например, у вас может быть фабрика, которая возвращает автомобильный объект, но точный класс, который возвращается, может быть Volkswagen или Ferrari.

Фабрики часто используются для внедрения зависимостей (DI).Таким образом, в приведенном вами примере вы можете использовать фабрику для возврата объекта, который взаимодействует с БД, но фактический класс может взаимодействовать с БД с помощью операторов SQL или, возможно, это другой класс, который использует инфраструктуру объектно-реляционного отображения (ORM),Это отделяет фактический интерфейс / реализацию базы данных от остальной части приложения и обеспечивает большую гибкость при изменениях доступа к БД в будущем.Фабрика может даже вернуть макет доступа к БД, который можно использовать для модульного тестирования.DI может использоваться для изменения того, какой метод используется во время выполнения.Я бы определенно рекомендовал использовать фабрики по этим причинам.

Фабрики также могут возвращать синглтоны.Таким образом, вопрос, который необходимо задать при определении, нужен ли вам синглтон, заключается в том, нужно ли мне поддерживать состояние во всем приложении для всех объектов, которые будут иметь к нему доступ.Примером желания поддерживать состояние является то, что вы хотите сохранить соединение открытым с базой данных для любого объекта, который обращается к этому объекту БД в течение всего жизненного цикла приложения.Не предлагает вам делать это, но это всего лишь пример того, почему вы можете захотеть сохранить информацию о состоянии этого объекта в течение жизни приложения.

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