|
|
Postat pe 18.04.2017 14:54:11
|
|
|

Să începem cu o bucată simplă de cod:
Să presupunem că este un program web, vrem să verificăm mai întâi sesiunea, apoi permisiunile, să începem o tranzacție, să scriem un jurnal, apoi să executăm operația propriu-zisă și, în final, să scriem un jurnal. Evident, nu putem scrie toate apelurile de metodă pentru operațiunile de mai sus în DoSomething(), așa că codul va deveni o mare mizerie, deci ce ar trebui să facem?
Există multe moduri de a o implementa, cum ar fi folosirea unor framework-uri precum spring, dar în proiectele propriu-zise nu este posibil să introduci un cadru casual, iar de multe ori trebuie să scriem niște mecanisme pe cont propriu.
Aici mă gândesc la Filter în MVC, atâta timp cât pui o etichetă de atribut pe Controller sau Action, poți face și alte lucruri înainte și după ce metoda este executată. Așadar, să simulăm pur și simplu o implementare a unui filtru.
În primul rând, metoda originală este transformată într-o modalitate elegantă de etichete de caracteristici:
În cazul etichetelor de caracteristici, trebuie să existe clase corespunzătoare etichetelor de caracteristici, precum și implementărilor AOP, care pot fi conținute independent într-un fișier sau asamblare.
Mai întâi, eticheta atașată metodei, implementată ca vid:
//贴在方法上的标签 [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] clasa publică sigilată MyInterceptorMethodAttribute : Attribute { } După aceea, definește eticheta care urmează să fie atașată clasei:
Iată o clasă MyAopHandler definită, implementată astfel:
Rețineți că partea specifică de operare a codului de mai sus este echivalentă cu o "clasă proxy", care practic schimbă contextul execuției metodei. Structurile de programe orientate pe obiecte, cum ar fi delegații, pot fi folosite pentru a expune implementarea specifică lumii exterioare pentru dezvoltare secundară. |
Precedent:ES5, ES6, ES2016, ES. Următorul: Ce se întâmplă cu versiunea de Javascrip{filter}t?Următor:PowerShell Tutorial pentru începuturi - versiunea v0.3
|