Ведение журнала для доменных объектов с использованием аспектов (ткачество времени компиляции)

Я хочу сохранить код регистрации отдельно от логики моего домена, используя 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

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

Другие вопросы по тегам