Singleton - Синглтон - зло

Mar 26, 2010 13:41

Это очень популярный шаблон среди разработчиков. Суть его в том, что при объектно-ориентированном подходе операции создания объекта достаточно дорогие, а создание сложных объектов - дорого втройне. Однако практически в любом приложении требуется минимум один глобальный объект ( Read more... )

крысота кода

Leave a comment

Comments 6

zerkms March 27 2010, 03:43:49 UTC
Программирование - это такая наука, когда очень сложно, а вне контекста - крайне глупо говорить, что что-то зло, а что-то добро.

предложите альтернативу? IoC/DI? для гостевой? убейтесь.

Reply

exbe March 27 2010, 20:38:45 UTC
поэтому я написал комментарий про "кому интересно"
Ситуацию описал выше, как вы решите такую задачу?

Конечно, вне контекста глупо называть то или иное решение плохим или хорошим.
Про крутость "одиночки" я слышу часто и, так сказать, с некоторым пафосом.
Типо все задачи он решит, "все может" и "как ты не пользуешь этот мега-паттерн?!"...
А он вполне себе специфичен, и плохо его делать затычкой в каждой дырке.
IoC/DI, кстати, тоже.

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

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

Reply

zerkms March 28 2010, 02:25:02 UTC
очень клёво сформулирована задача - все требования притянуты зауши настолько, чтобы единственным правильным ответом была фабрика. та-да! :-)

Reply

exbe March 28 2010, 07:46:31 UTC
ну, пример построен на фрагменте реально существующей системы и моего понимания.
Если рассказать обо всей системы целиком, наверняка найдется другой путь, без использования PageFabrica и моя истерика будет не по теме.

вторая альтернатива, это порефакторить PageFabrica - отменить синглтон (заодно будет ясно - нужен он или нет).

Reply


Leave a comment

Up