У меня есть сервисное выполнение окон. В этом сервисе я разместил некоторый сервис (WCF). Я должен иметь некоторый "в классе" держателя данных оперативной памяти. Цель этого класса состоит в том, чтобы содержать не-persistant данные, пока услуга окон работает. Этот класс должен быть доступным через сервисы WCF. Они помещают некоторые значения в этот класс или получают некоторые значения от этого класса.
Первой вещью, что сталкивается с моим умом, был singleton-класс. Я думаю этот шаблон соответствия, идеально подходящие для этой ситуации. Но тогда я читал некоторое сообщение, что singleton-класс не на самом деле настолько хорош.
Таким образом, действительно ли там кто-либо альтернативен для этого вида ситуации? Или одиночный элемент для этого хорошо? Что относительно Метода фабрики? Но тогда Где я нашел бы ссылки для objcects?
Шаблон проектирования Singleton действительно должен быть переименован как анти-шаблон. Это зло . Не используйте его.
Лучшая альтернатива - использовать Внедрение зависимостей (DI) и внедрить класс, который вы можете использовать для хранения необходимых вам непостоянных данных.
Многое из люди не понимают, что WCF поддерживает шаблоны внедрения зависимостей (DI), такие как Constructor Injection , без особых проблем.
Если вы ограничиваете внедренный класс как долгоживущий объект (обычно называемый синглтоном) стиль жизни , но не путать с шаблоном проектирования Singleton) вы можете продолжать обращаться к одному и тому же экземпляру между вызовами.
Однако,
Мне интересно узнать, почему людям не нравится синглтон, я бы с радостью используйте его для описанного выше сценария, если только кто-нибудь не скажет мне несколько веских причин, почему нет.
Это простой шаблон для понимания и реализации, и я ' Проделав еще несколько исследований относительно того, почему некоторым людям не нравится шаблон синглтона, полезный набор альтернатив рассматривается в вопросе: Какая альтернатива синглтону Это касается недостатков модульного тестирования этого шаблона. 1224] РЕДАКТИРОВАТЬ 2 Я окончательно убедился, что синглтон может быть плохим. http://googletesting.blogspot.com/2008/08/by-miko-hevery-so-you-join-new-project.html хорошо замечает, что с точки зрения технического обслуживания объявление зависимости уровень API облегчает программистам контроль над зависимостями.
Зачем вам для этого нужен синглтон?
Вам действительно нужно ограничивать экземпляры этого класса одним экземпляром? Если нет, не используйте синглтон - он вам не нужен, он только усложнит ваш класс.