Aspektno usmerjeno programiranje (AOP) dopolnjuje OOP v smislu, da zagotavlja tudi modularnost. Toda ključna enota modularnosti je vidik kot razred.
AOP razdeli programsko logiko na ločene dele (imenovane zadeve). Uporablja se za povečanje modularnosti z medsektorskih pomislekov .
A medsektorsko skrb je skrb, ki lahko vpliva na celotno aplikacijo in bi morala biti centralizirana na čim eni lokaciji v kodi, kot je upravljanje transakcij, preverjanje pristnosti, beleženje, varnost itd.
Zakaj uporabljati AOP?
Zagotavlja vtični način za dinamično dodajanje dodatne skrbi pred, za ali okoli dejanske logike. Recimo, da je v razredu 10 metod, kot je navedeno spodaj:
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(){...} }
Obstaja 5 metod, ki se začnejo z m, 2 metodi, ki se začnejo z n, in 3 metode, ki se začnejo s p.
Razumevanje scenarija Moram vzdrževati dnevnik in poslati obvestilo po klicu metod, ki se začnejo z m.
Težava brez AOP Metode (ki vodijo dnevnik in pošiljajo obvestila) lahko pokličemo iz metod, ki se začnejo z m. V takem scenariju moramo kodo napisati v vseh 5 metodah.
Če pa stranka v prihodnosti reče, da mi ni treba poslati obvestila, morate spremeniti vse metode. To vodi do težav z vzdrževanjem.
Rešitev z AOP Ni nam treba klicati metod iz metode. Zdaj lahko v metodi razreda definiramo dodatno skrb, kot je vzdrževanje dnevnika, pošiljanje obvestil itd. Njegov vnos je podan v datoteki xml.
V prihodnosti, če odjemalec reče, da odstranimo funkcijo obveščanja, moramo spremeniti samo datoteko xml. Torej je vzdrževanje v AOP enostavno.
jquery ob kliku
Kje uporabljati AOP?
AOP se večinoma uporablja v naslednjih primerih:
- za zagotavljanje deklarativnih podjetniških storitev, kot je deklarativno upravljanje transakcij.
- Uporabnikom omogoča implementacijo vidikov po meri.
AOP koncepti in terminologija
Koncepti in terminologija AOP so naslednji:
- Točka pridružitve
- nasvet
- Pointcut
- Uvod
- Ciljni predmet
- Vidik
- Prestreznik
- AOP Proxy
- Tkanje
Točka pridružitve
Točka pridružitve je katera koli točka v vašem programu, kot je izvajanje metode, obravnava izjem, dostop do polja itd. Spring podpira samo točko pridružitve izvajanja metode.
nasvet
Nasvet predstavlja dejanje, ki ga izvede vidik na določeni točki pridružitve. Obstajajo različne vrste nasvetov:
- Pred Nasveti : izvede se pred točko združevanja.
- Po vračilu nasvet : izvede se po tem, ko se skupna točka normalno zaključi.
- Nasvet po metanju : izvede se, če se metoda zaključi z vrženjem izjeme.
- Po (končno) Nasvetu : izvede se po točki združevanja ne glede na izhod iz točke združevanja, ne glede na to, ali se vrača običajno ali izredno.
- Okoli Nasveti : Izvede se pred točko združevanja in za njo.
Pointcut
Je izrazni jezik AOP, ki se ujema s točkami združevanja.
Uvod
Pomeni uvedbo dodatne metode in polj za vrsto. Omogoča uvedbo novega vmesnika za kateri koli priporočeni objekt.
Ciljni predmet
Je predmet, tj. svetuje mu en ali več vidikov. Spomladi je znan tudi kot proksi objekt, ker je Spring AOP implementiran s pomočjo izvajalnih proksijev.
Vidik
To je razred, ki vsebuje nasvete, spojne točke itd.
Prestreznik
Je vidik, ki vsebuje samo en nasvet.
AOP Proxy
Uporablja se za izvajanje aspektnih pogodb, ustvarjenih z okvirom AOP. To bo dinamični proxy JDK ali CGLIB proxy v spomladanskem okviru.
Tkanje
To je postopek povezovanja vidika z drugimi tipi aplikacij ali objekti za ustvarjanje priporočenega predmeta. Tkanje se lahko izvede med prevajanjem, časom nalaganja ali med izvajanjem. Spring AOP izvaja tkanje med izvajanjem.
java switch stavek
Izvedbe AOP
Izvedbe AOP zagotavljajo:
- AspectJ
- Pomladni AOP
- JBoss AOP
Pomladni AOP
Spring AOP je mogoče uporabiti na 3 spodaj navedene načine. Toda široko uporabljen pristop je Spring AspectJ Annotation Style. Spodaj so navedeni 3 načini uporabe vzmetnega AOP:
- By Spring1.2 Stari slog (temelji na dtd) (podprto tudi v Spring3)
- Po slogu pripisov AspectJ
- By Spring XML slog konfiguracije (na podlagi sheme)
Referenčne povezave
Pomladni vir AOPSpring Source AOP API
Wikipedia