Comments 8
Все это конечно хорошо, но иногда можно обойтись простеньким events-manager'ом, т.к. тащить все «новое» не всегда круто :) В php есть goAOP! (или просто go!) тоже хорошая вещь.
+1
Для Java см. документацию к пакету javax.interceptor.
+1
Так-так-так. Нужно время для осознания, но всё это определённо очень интересно!
+1
Шикарная статья, спасибо. Сам люблю АОП. Теперь буду давать ссылку на вашу статью ))
+1
Прелестная статья, спасибо за перевод!
С каждым разом всё больше убеждаюсь, что чем сильнее статья, тем меньше плюсов и комментариев она соберет :)
С каждым разом всё больше убеждаюсь, что чем сильнее статья, тем меньше плюсов и комментариев она соберет :)
+1
Хорошая статься, но я бы хотел предостеречь против АОП:
не зря все 3 сценария использования выглядят как некий аврал, и в данном случае оно вполне уместно. но не в обычной жизни.
суть АОП в том, что в коде классов нет и намёка на то, что в них что-то внедряется.
из-за этого программист, читающий и отлаживающий код либо не догадывается о срабатывании аспекта, либо он должен параноидально проверять, не навешен ли на каждый метод какой-то аспект, который может повлиять на происходящее.
в данном примере ещё есть какой-то намёк — использование фабрики. но по классике (если я правильно понимаю) и его быть не должно.
у меня есть подозрение, что для подобных решений в спокойном состоянии лучше использовать метапрограммирование (но придётся писать на другом языке): для .NET есть Nemerle. там макросы могут в том числе и такие задачи решать, и их можно обозначать в явном виде (например помечая класс)
где-то в комментариях читал, что в яве для создания АОП потребовался год и целая фирма, а в лиспе достаточно настругать кучку макросов.
не зря все 3 сценария использования выглядят как некий аврал, и в данном случае оно вполне уместно. но не в обычной жизни.
суть АОП в том, что в коде классов нет и намёка на то, что в них что-то внедряется.
из-за этого программист, читающий и отлаживающий код либо не догадывается о срабатывании аспекта, либо он должен параноидально проверять, не навешен ли на каждый метод какой-то аспект, который может повлиять на происходящее.
в данном примере ещё есть какой-то намёк — использование фабрики. но по классике (если я правильно понимаю) и его быть не должно.
у меня есть подозрение, что для подобных решений в спокойном состоянии лучше использовать метапрограммирование (но придётся писать на другом языке): для .NET есть Nemerle. там макросы могут в том числе и такие задачи решать, и их можно обозначать в явном виде (например помечая класс)
где-то в комментариях читал, что в яве для создания АОП потребовался год и целая фирма, а в лиспе достаточно настругать кучку макросов.
+1
Дочитал до конца. Не понял только чем автора не устроил Castle.DynamicProxy. Если создавать объекты через IOC все перехватичики сразу из коробки. Функционал примерно тот же, хотя реализация конечно прикольная.
0
Sign up to leave a comment.
Аспектно-ориентированное программирование: изучи и сделай сам!