Re[20]: Singleton действительно антипаттерн в enterprize при
От: adontz Грузия http://adontz.wordpress.com/
Дата: 13.08.07 12:39
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Мне не нужно выводить в несколько логгеров. Хотя эсли это понадобится я это легко сделаю.

WH>Логгер у меня один но много сессий. И для каждой сесии нужно что-то дописать в лог.
WH>А внутри сессии есть запросы. И для каждого запроса тоже что-то нужно дописать в лог.

Chain of Responsibility позволяет декорировать поведение. Ты делаешь базовый логгер и логгер который что-то дописывает в зависимости от сессии, расшряя (но не заменяя) поведение базового. Я не зря указал отдельно is_handled и отдельно is_canceled. Воспринимай Chain of Responsibility как список декораторов (собственно это и есть список декораторов).

WH>Скрещивание ежа с ужом это разговор отдельный и в любом случае требует изучения работы всех функций.

WH>Кстати зачем выделеное SomeGlobalDelegateTable? В многопоточностью проблем не боишься?

Global потому что время жизни подписки может быть больше, чем время жизни объекта. Например, возьмём интероп к HTMLayout.
Есть HTML код
<html>
    <head>
    </head>
    <body>
        <div id="box" style="width: 100px; height: 100px">
           Click me!
        </div>
    </body>
</html>

и я хочу подписаться на мышиное сообщение для div. Выглядит это так
HtmlTag div = _htmlView.Root.SelectFirst("div#box");
div.Mouse += OnMouse;

После чего объект div благополучно уничтожается и собирается сборщиком мусора, а вот оповещения в OnMouse приходят.

WH>Не грузить то что грузить не нужно никак не связано с тем используются синглетоны или нет.


Просто с синглтонами эта проблема решается сама собой, без дополнительных усилий.
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.