Следует ли использовать фабричный шаблон для отключения функциональности? - PullRequest
1 голос
/ 29 октября 2010

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

Допустим, например, у меня есть фабрика под названием LoggerFactory, которая создает регистраторinstance.

Если в моем приложении отключено ведение журнала конфигурации:

Должна ли фабрика ведения журнала передавать обратно экземпляр журнала, который является фиктивным, который ничего не делает?Таким образом, любой код, использующий регистратор, не нуждается в изменении.

Или, это ответственность кода, использующего регистратор, не использовать регистратор, если он отключен в конфигурации?

Или сам регистратор ничего не делает, если он отключен?

Спасибо за помощь.

Ответы [ 3 ]

2 голосов
/ 29 октября 2010

ИМХО, это не вопрос о принципах заводского образца.Это больше вопрос о дизайне вашего стиля кодирования и т. Д. Но просто для того, чтобы дать ответ относительно вашего конкретного вопроса: было бы проще, более интуитивно и более гибко (1) возвращать объект как экземпляр «пустого»класс logger или (2) для проверки флага logging-disabled-внутри обычного класса logger.

2 голосов
/ 29 октября 2010

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

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

1 голос
/ 29 октября 2010

Код, использующий регистратор, не должен включаться в условие включения / выключения.

Относительно того, использовать ли отключенный логгер Dummy или просто регистратор stadanrd, который знает, что он отключен, это менее очевидно. Прагматически я подозреваю, что мы склонны обнаруживать, что частичное включение является наиболее распространенным сценарием - некоторые назначения или классы сообщений будут иметь тенденцию испускаться, когда большинство отключено. Так что я, вероятно, считаю это естественной работой регистратора, чтобы понять, для чего он настроен.

Я бы использовал манекен только в том случае, если это значительно упростит реализацию логгера и это обычный сценарий использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...