Singleton или нет

У меня есть сервисное выполнение окон. В этом сервисе я разместил некоторый сервис (WCF). Я должен иметь некоторый "в классе" держателя данных оперативной памяти. Цель этого класса состоит в том, чтобы содержать не-persistant данные, пока услуга окон работает. Этот класс должен быть доступным через сервисы WCF. Они помещают некоторые значения в этот класс или получают некоторые значения от этого класса.

Первой вещью, что сталкивается с моим умом, был singleton-класс. Я думаю этот шаблон соответствия, идеально подходящие для этой ситуации. Но тогда я читал некоторое сообщение, что singleton-класс не на самом деле настолько хорош.

Таким образом, действительно ли там кто-либо альтернативен для этого вида ситуации? Или одиночный элемент для этого хорошо? Что относительно Метода фабрики? Но тогда Где я нашел бы ссылки для objcects?

9
задан user137348 17 December 2009 в 12:19
поделиться

3 ответа

Шаблон проектирования Singleton действительно должен быть переименован как анти-шаблон. Это зло . Не используйте его.

Лучшая альтернатива - использовать Внедрение зависимостей (DI) и внедрить класс, который вы можете использовать для хранения необходимых вам непостоянных данных.

Многое из люди не понимают, что WCF поддерживает шаблоны внедрения зависимостей (DI), такие как Constructor Injection , без особых проблем.

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

Однако,

15
ответ дан 4 December 2019 в 09:36
поделиться

Мне интересно узнать, почему людям не нравится синглтон, я бы с радостью используйте его для описанного выше сценария, если только кто-нибудь не скажет мне несколько веских причин, почему нет.

Это простой шаблон для понимания и реализации, и я ' Проделав еще несколько исследований относительно того, почему некоторым людям не нравится шаблон синглтона, полезный набор альтернатив рассматривается в вопросе: Какая альтернатива синглтону Это касается недостатков модульного тестирования этого шаблона. 1224] РЕДАКТИРОВАТЬ 2 Я окончательно убедился, что синглтон может быть плохим. http://googletesting.blogspot.com/2008/08/by-miko-hevery-so-you-join-new-project.html хорошо замечает, что с точки зрения технического обслуживания объявление зависимости уровень API облегчает программистам контроль над зависимостями.

6
ответ дан 4 December 2019 в 09:36
поделиться

Зачем вам для этого нужен синглтон?

Вам действительно нужно ограничивать экземпляры этого класса одним экземпляром? Если нет, не используйте синглтон - он вам не нужен, он только усложнит ваш класс.

1
ответ дан 4 December 2019 в 09:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: