Вы называете это насмешкой, но кажется, что то, что вы делаете, это просто правильное разделение забот.
Хорошо бы использовать полиморфизм над операторами if для контроля того, что должно произойти.
Пример, скажем, если вы хотите, чтобы регистрация была необязательной. Императивный подход заключается в предоставлении boolean isLogging
. Затем каждый раз проверяйте логическое значение как if (isLogging) { ...logging code... }
.
Но если вместо этого вы отделяете фактический код журнала как заботу о другом объекте, тогда вы можете установить для этого объекта тот, который делает то, что вы хотите. Помимо того, что журнал с нулевой маршрутизацией, представляющий запись в журнал, отключен, и тот, который фактически выполняет запись в файл, он также позволяет вам предоставлять объект регистрации, который записывает в базу данных вместо файла, он позволяет добавлять функции в журнал, как ротация лог-файла.
Это просто хорошее объектно-ориентированное программирование.