Ведение журнала для доменных объектов с использованием аспектов (ткачество времени компиляции)
Я хочу сохранить код регистрации отдельно от логики моего домена, используя aspects
, Но те aspects
следует делать ткачество времени компиляции, а не создание прокси-объектов.
Какие есть все варианты кроме AspectJ
?
1 ответ
Что ж, еще один подход к решению трансверсальных проблем, таких как ведение журнала, заключается в использовании Command Pattern. Таким образом, вы можете использовать ServiceDelegate для управления всеми запусками команд и в этом месте взять под контроль все трансверсальные проблемы.
Например, каждая команда должна наследоваться от абстрактного класса, который определяет runCommand
метод. Затем ServiceDelegate
вызывается для запуска команды следующим образом:
//take control of pre conditions
if(command.isAuthEnabled)
//do what you want
command.runComman();
//take control of post conditions
if(command.isLogEnabled())
//do what you want
Может быть, это звучит странно, но это альтернатива для использования аспектов. Это не лучше или хуже, это другое, и это будут сценарии, где аспект будет соответствовать лучше, и другие, где команда будет хорошей.