Как можно совместить проектирование, управляемое предметной областью, с аспектно-ориентированным программированием?
-
20-09-2019 - |
Вопрос
Я провожу исследование и хочу затронуть один вопрос: «Какова связь между предметно-ориентированным дизайном и аспектно-ориентированным программированием?»
Я знаю, что основным принципом DDD является разделение ответственности, и я это понимаю.В чем я не совсем уверен, так это в том, действуют ли аспекты в АОП как «поддомены» в нашем домене в DDD.
Являются ли эти два понятия, по сути, одним и тем же.Я имею в виду, что если я разработаю приложение, следуя AOP и DDD, в конце концов окажется правдой, что «поддомен» == «аспект».
Я также буду признателен за любые другие мнения о том, что общего между AOP и DDD.
Решение
Одна из целей DDD — обеспечить чистое представление вашей бизнес-логики, не зависящее от вашей инфраструктуры.Очень мощный инструмент для достижения этой цели — АОП.В основном я использую AOP для поддоменов инфраструктуры, таких как ведение журналов, кэширование, проверка и обработка исключений.Обычно я не использую АОП для реальной бизнес-логики, однако проверка — это своего рода как инфраструктура, так и бизнес-логика.
В тех случаях, когда АОП проникает в бизнес-логику, я использую атрибуты/аннотации, чтобы вызвать поведение.Что касается других проблем, я буду использовать политику/конфигурацию для применения аспектов.