Re[6]: Singleton действительно антипаттерн в enterprize прил
От: adontz Грузия http://adontz.wordpress.com/
Дата: 10.08.07 17:19
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Что можно инициализировать в stateless-синглтоне?

C>Интерфейс — это уже интереснее. Но я слабо представляю когда это нужно.

Зависит от синглтона. Возьмём конкретный, близкий почти всем, пример — журналирование.
Вызов Logger.Log(string message) очевидно не меняет состояния Logger, потому что у него нет никакого состояния. В терминах Си++ это
class Logger
{
    public:
        void Log(string message) const;
}

С другой стороны в процессе инициализации я могу захотеть открыть файл, сокет, соединение с БД и т.д.
Что касается интерфейса, в зависимости от настроек приложения, системы, аппаратной конфигурации могут возвращаться разные версии синглтона. То есть для
interface ILogger
{
    public:
        virtual void Log(string message) const = 0;
}

Могут быть возвращены LoggerRuRu, LoggerEnUs, LoggerOptimizedForPentium4, LoggerWithSelfTrace и т.п. Естественно, что для того кто использует синглтон это должно быть скрыто. Интерфейсы тут помогают.
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.