Как стать автором
Обновить

Комментарии 8

Все это конечно хорошо, но иногда можно обойтись простеньким events-manager'ом, т.к. тащить все «новое» не всегда круто :) В php есть goAOP! (или просто go!) тоже хорошая вещь.
Для Java см. документацию к пакету javax.interceptor.
Так-так-так. Нужно время для осознания, но всё это определённо очень интересно!
Шикарная статья, спасибо. Сам люблю АОП. Теперь буду давать ссылку на вашу статью ))
Прелестная статья, спасибо за перевод!
С каждым разом всё больше убеждаюсь, что чем сильнее статья, тем меньше плюсов и комментариев она соберет :)
Хорошая статься, но я бы хотел предостеречь против АОП:
не зря все 3 сценария использования выглядят как некий аврал, и в данном случае оно вполне уместно. но не в обычной жизни.
суть АОП в том, что в коде классов нет и намёка на то, что в них что-то внедряется.
из-за этого программист, читающий и отлаживающий код либо не догадывается о срабатывании аспекта, либо он должен параноидально проверять, не навешен ли на каждый метод какой-то аспект, который может повлиять на происходящее.
в данном примере ещё есть какой-то намёк — использование фабрики. но по классике (если я правильно понимаю) и его быть не должно.

у меня есть подозрение, что для подобных решений в спокойном состоянии лучше использовать метапрограммирование (но придётся писать на другом языке): для .NET есть Nemerle. там макросы могут в том числе и такие задачи решать, и их можно обозначать в явном виде (например помечая класс)

где-то в комментариях читал, что в яве для создания АОП потребовался год и целая фирма, а в лиспе достаточно настругать кучку макросов.
Согласен, данное применение является вариантом хака. И все приведенные примеры, собственно, и являются хаком — когда нужно резко внести изменение в поведение апы.
Дочитал до конца. Не понял только чем автора не устроил Castle.DynamicProxy. Если создавать объекты через IOC все перехватичики сразу из коробки. Функционал примерно тот же, хотя реализация конечно прикольная.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории