|
|
Opslået på 18/04/2017 14.54.11
|
|
|

Lad os starte med et simpelt stykke kode:
Lad os sige, at dette er et webprogram, vi vil først tjekke sessionen, derefter tjekke tilladelserne, starte en transaktion, skrive en log, så udføre selve operationen og til sidst skrive en log. Det er tydeligt, at vi ikke kan skrive alle metodekald til ovenstående operationer i DoSomething(), så koden bliver et stort stykke lort, så hvad skal vi gøre?
Der er mange måder at implementere det på, såsom ved at bruge frameworks som Spring, men i faktiske projekter er det ikke muligt at introducere et framework uformelt, og ofte er vi nødt til selv at skrive nogle mekanismer.
Her tænker jeg på Filteret i MVC, så længe du sætter et attributtag på Controlleren eller Handlingen, kan du gøre nogle andre ting før og efter metoden udføres. Så lad os simpelthen simulere en filterimplementering.
Først og fremmest omdannes den oprindelige metode til en elegant måde at bruge feature-mærker på:
Med feature-tags skal der være klasser, der svarer til feature-tags, samt AOP-implementeringer, som kan være uafhængigt indeholdt i en fil eller assembly.
Først er etiketten knyttet til metoden, implementeret som tom:
//贴在方法上的标签 [AttributeUsage(AttributeTargets.Method, AllowMultiple = falsk)] public sealed class MyInterceptorMethodAttribute : Attribute { } Derefter defineres etiketten, der skal knyttes til klassen:
Her er en MyAopHandler-klasse defineret, implementeret som følger:
Bemærk, at den specifikke operationsdel af koden ovenfor svarer til en "proxy-klasse", som i det væsentlige ændrer konteksten for metodeudførelsen. Objektorienterede programstrukturer såsom delegerede kan bruges til at eksponere den specifikke implementering for omverdenen til sekundær udvikling. |
Tidligere:ES5, ES6, ES2016, ES. Næste: Hvad sker der med versionen af Javascrip{filter}t?Næste:PowerShell Komme I Gang Tutorial - v0.3 version
|