Поняття АОП пояснено для манекена


19

Чи може хтось пояснити поняття AOP для манекенів: точка приєднання, вирізання точок, плетіння тощо.

Наприклад: Аспект: модуляризація проблеми, яка охоплює декілька класів. Що це означає?

Відповіді:


15

Подумайте про занепокоєння як про функціональну групу, наприклад реєстрацію, аудит, безпеку

Ці функції коли-небудь присутні в більшості кодів, але насправді вони не живуть у наших класах на тварин-> собак - вони є функціональними можливостями, які повинні жити в багатьох класах - вони є суперечливими проблемами .

  • Joinpoint місце в коді , де аспект код насправді біг.

  • Зріз точок , як сказати , що код працює на jointpoint.

  • Плетіння - це коли компілятор / система приймає ваш звичайний код і включає весь код AOP, щоб він запускав правильний код тощо - може вважати це додатковим кроком перед компіляцією.

Простий зрозумілий приклад:

  1. Ми хочемо відстежувати всі виклики методів з метою налагодження (тобто ми хочемо побачити, які методи викликаються в якому порядку).
  2. Ми створюємо аспект, який записує ім'я методу при його виклику
  3. Ми створюємо точки, які пов'язують аспект з усіма методами в коді. У більшості фреймворків AOP ви можете це легко зробити за допомогою деяких підказок
  4. Зараз ми проводимо ведення журналу кожного методу, що колись називався.

Зауважте, що термінологія дещо відрізняється між різними реалізаціями та рамками AOP.


Так само, як я писав свою тривалу відповідь! Ваш більш лаконічний, мені це подобається. Відредагуватиме її злегка для наочності.
Martijn Verburg

Дякую, я повинен вивчити правила форматування, продовжуйте забувати.
Jonno

Здається, це було б просто реалізувати за допомогою декораторів Python або макросів Lisp-Y / N?
Пол Натан

@Paul - не знайомий з жодною з конструкцій, про яку ти згадуєш, боюся, і швидкий google не дав мені достатньо зрозуміти, щоб відповісти в будь-якому випадку.
Jonno

@PaulNathan: AOP досить простий у динамічних мовах. Просту рамку 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

Точковий

Місце у виконанні коду, де виконується частина аспекту.

JoinPoint

Точка, де ваш аспект "приєднується" до точки. У "до" JoinPoint ви матимете доступ до параметрів, у "after" joinPoint ви отримаєте доступ до значення, що повертається. Якщо викид буде викинуто, вам може знадобитися "спробувати-заставити нарешті", щоб обробити його або повторно кинути.

Плетіння

Процес додавання аспектів навколо точки


Хто б не проголосував мою відповідь, будь ласка, залиште коментар, чому - якщо ви не заперечуєте. Обіцяю, що не буду розпочинати суперечки з цього приводу. Мені хотілося б знати, що я міг зробити краще. Дякую!
Прашант
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.