Aspektovo orientované programovanie (AOP) dopĺňa OOP v tom zmysle, že poskytuje aj modularitu. Ale kľúčovou jednotkou modularity je aspekt ako trieda.
AOP rozdeľuje logiku programu na samostatné časti (nazývané obavy). Používa sa na zvýšenie modularity o prierezové obavy .
A prierezový záujem je problém, ktorý môže ovplyvniť celú aplikáciu a mal by byť centralizovaný na jednom mieste v kóde, ako je to možné, ako je napríklad správa transakcií, autentifikácia, protokolovanie, bezpečnosť atď.
Prečo používať AOP?
Poskytuje pripojiteľný spôsob, ako dynamicky pridať ďalšie obavy pred, za alebo okolo skutočnej logiky. Predpokladajme, že v triede je 10 metód, ako je uvedené nižšie:
class A{ public void m1(){...} public void m2(){...} public void m3(){...} public void m4(){...} public void m5(){...} public void n1(){...} public void n2(){...} public void p1(){...} public void p2(){...} public void p3(){...} }
Existuje 5 metód, ktoré začínajú od m, 2 metódy, ktoré začínajú od n a 3 metódy, ktoré začínajú od p.
Pochopenie scenára Musím udržiavať protokol a odosielať upozornenia po volaní metód, ktoré začínajú od m.
Problém bez AOP Metódy (ktoré udržiavajú protokol a posielajú upozornenia) môžeme volať z metód začínajúcich na m. V takomto scenári musíme napísať kód všetkými 5 metódami.
Ak však klient v budúcnosti povie, nemusím posielať upozornenia, musíte zmeniť všetky metódy. Vedie to k problémom s údržbou.
Riešenie s AOP Nemusíme volať metódy z metódy. Teraz môžeme definovať ďalšie starosti, ako je udržiavanie denníka, odosielanie upozornení atď. v metóde triedy. Jeho záznam je uvedený v súbore xml.
V budúcnosti, ak klient povie, že má odstrániť funkciu oznamovateľa, musíme to zmeniť iba v súbore xml. Údržba je teda v AOP jednoduchá.
C++ gui
Kde použiť AOP?
AOP sa najčastejšie používa v nasledujúcich prípadoch:
- poskytovať deklaratívne podnikové služby, ako je deklaratívny manažment transakcií.
- Umožňuje používateľom implementovať vlastné aspekty.
Koncepcie a terminológia AOP
Koncepty a terminológie AOP sú nasledovné:
- Pripojte sa k bodu
- Poradenstvo
- Pointcut
- Úvod
- Cieľový objekt
- Aspekt
- Stíhačka
- AOP Proxy
- Tkanie
Pripojte sa k bodu
Bod spojenia je ľubovoľný bod vo vašom programe, ako napríklad vykonávanie metódy, spracovanie výnimiek, prístup k poli atď. Spring podporuje iba bod spojenia vykonávania metódy.
Poradenstvo
Poradenstvo predstavuje akciu vykonanú aspektom v konkrétnom bode spojenia. Existujú rôzne typy rád:
- Pred radou : vykoná sa pred bodom spojenia.
- Po vrátení rady : vykoná sa po normálnom dokončení spoločného bodu.
- Po hádzaní Rady : vykoná sa, ak sa metóda ukončí vyvolaním výnimky.
- Po (konečne) Rade : vykoná sa po bode spojenia bez ohľadu na výstup z bodu spojenia, či už ide o normálny alebo výnimočný návrat.
- Okolo rady : Vykonáva sa pred a za bodom spojenia.
Pointcut
Je to výrazový jazyk AOP, ktorý sa zhoduje s bodmi spojenia.
Úvod
Znamená to zavedenie dodatočnej metódy a polí pre typ. Umožňuje vám zaviesť nové rozhranie pre akýkoľvek odporúčaný objekt.
Cieľový objekt
Je to objekt, t. j. byť doporučovaný jedným alebo viacerými aspektmi. Je tiež známy ako objekt proxy na jar, pretože Spring AOP je implementovaný pomocou runtime proxy.
Aspekt
Je to trieda, ktorá obsahuje rady, spoločné body atď.
Stíhačka
Je to aspekt, ktorý obsahuje len jednu radu.
AOP Proxy
Používa sa na implementáciu kontraktov aspektov, vytvorených rámcom AOP. Bude to dynamický proxy JDK alebo proxy CGLIB na jar.
Tkanie
Je to proces prepojenia aspektu s inými typmi aplikácií alebo objektmi na vytvorenie odporúčaného objektu. Tkanie môže byť vykonané v čase kompilácie, načítavania alebo behu. Spring AOP vykonáva tkanie za behu.
čítanie súboru csv v jazyku Java
Implementácie AOP
Implementácie AOP zabezpečujú:
- AspektJ
- Pružinový AOP
- JBoss AOP
Pružinový AOP
Pružinový AOP je možné použiť 3 nižšie uvedenými spôsobmi. Ale široko používaný prístup je Spring AspectJ Annotation Style. Nižšie sú uvedené 3 spôsoby použitia pružinového AOP:
- Od Spring1.2 Old style (založené na dtd) (podporované aj v Spring3)
- Podľa štýlu anotácie AspectJ
- Podľa jarného konfiguračného štýlu XML (založené na schéme)
Referenčné odkazy
Pružinový zdroj AOPSpring Source AOP API
Wikipedia