Концепции АОП для манекена


19

Может ли кто-нибудь объяснить концепции АОП для манекенов: точка соединения, вырезка, плетение и т. Д.

Например: Аспект: модульная структура, охватывающая несколько классов. Что это обозначает?

Ответы:


15

Думайте о проблеме как о функциональной группе, например, ведение журнала, аудит, безопасность

Эти функциональные возможности когда-либо присутствуют в большинстве кода, но на самом деле они не существуют в наших классах animal-> dog - они являются функциональностью, которая должна существовать во многих классах - они являются сквозными проблемами .

  • Точка соединения - это место в коде, где фактически выполняется код аспекта.

  • Срез точек , как сказать , что код работает на jointpoint.

  • Переплетение - это когда компилятор / система берет ваш обычный код и включает в себя весь код AOP, чтобы он вызывал правильный код и т. Д. - это можно считать дополнительным этапом предварительной компиляции.

Простой понятный пример:

  1. Мы хотим отслеживать все вызовы методов для целей отладки (т.е. мы хотим видеть, какие методы вызываются в каком порядке).
  2. Мы создаем аспект, который регистрирует имя метода, когда он вызывается
  3. Мы создаем pointcuts, которые связывают аспект со всеми методами в коде. В большинстве сред AOP вы можете легко сделать это с помощью некоторых символов
  4. Теперь у нас есть регистрация каждого когда-либо вызванного метода.

Пожалуйста, имейте в виду, что терминология немного отличается между различными реализациями и средами AOP.


Так же, как я писал свой длинный ответ! Твой более лаконичен, мне это нравится. Отредактирую его для ясности.
Мартейн Вербург

Спасибо, я должен изучить правила форматирования, продолжайте забывать.
Джонно

Похоже, это было бы просто реализовать с помощью декораторов Python или макросов Lisp - Y / N?
Пол Натан

@ Пол - не знаком ни с одной из этих конструкций, о которых вы упоминаете, я боюсь, и быстрый Google не дал мне достаточно понимания, чтобы ответить в любом случае.
Джонно

@PaulNathan: AOP довольно прост в динамических языках. Простая структура АОП может быть создана во второй половине дня. В скомпилированных языках, таких как Java, жизнь не так сладка.
Кевин Клайн

-1

Читать по порядку

Каждое определение основывается на предыдущих.

Межотраслевой концерн

Что-то, что беспокоит вас (беспокойство) повсюду (сквозное) в вашем приложении. например, регистрация или безопасность

аспект

Кусок кода , который автоматически добавляется перед тем , после того , или оба ( вокруг ) существующий код

PointCut & JoinPoint

                  Application code
                           |
                           |
                           |
                           |
                          \|/
                           |
JoinPoint  ----------->("before" aspect, on the way in)  // just before your intercepted application code
Pointcut start--------> public String myMethod(params ...)
                   //your application code
Pointcut finish--------> return (foo)
JoinPoint  ----------->("after" aspect, on the way out)  // just after your intercepted application code
                           |
                          \|/
                           |
                           |
                           |
                  Application code

Pointcut

Место в выполнении кода, где выполняется часть аспекта.

JoinPoint

Точка, в которой ваш аспект «соединяет» pointcut. В «before» joinPoint у вас будет доступ к параметрам, в «after» joinPoint у вас будет доступ к возвращаемому значению. Если выброшено исключение, вам может потребоваться «try-catch-finally», чтобы обработать или повторно выдать его.

ткачество

Процесс добавления аспектов вокруг pointcut


Кто бы ни проголосовал за мой ответ, пожалуйста, оставьте комментарий, почему - если вы не возражаете. Я обещаю, что не буду спорить по этому поводу. Однако я хотел бы знать, что я мог бы сделать лучше. Спасибо!
Прашант
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.