Комментарии 2
Основная разница в том, что AOP-фреймворк создает объект динамически, инъектируя поведение в зависимости от текущиего контекста и его конфигурации. А вот в функциональном подходе поведение линкуется статически. Для обеспечения гибкости поведение можно также делегировать контексту, но ссылку на него придется указывать дополнительно. То есть либо придется всегда передавать контекст в качестве одного из параметров, либо создавать глобальный объект-синглтон для контекста, ну или как вариант инъектировать его через ThreadLocal.
Именно. То что тут описано — это в некотором смысле вообще не AOP, а точнее — только один из его частных случаев. Претензии же вида «Такие аспекты должны быть четко видны в соответствующем коде» вообще выглядят странно. Мне приходилось довольно активно применять AOP для того, чтобы модифицировать поведение legacy кода, который про эти самые аспекты ни сном ни духом. И это является как раз плюсом, legacy код про аспекты знать не знает — при этом они его поведение успешно улучшают (ну, или как повезет ;).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
AOP vs Функции