|
|
Publicēts 18.04.2017 14:54:11
|
|
|

Sāksim ar vienkāršu koda daļu:
Tātad, pieņemsim, ka šī ir tīmekļa programma, mēs vēlamies vispirms pārbaudīt sesiju, pēc tam pārbaudīt atļaujas, sākt darījumu, uzrakstīt žurnālu, pēc tam izpildīt pašu operāciju un visbeidzot uzrakstīt žurnālu. Acīmredzot, mēs nevaram uzrakstīt visus metodes izsaukumus iepriekš minētajām operācijām DoSomething(), tāpēc kods kļūs par lielu sūdu gabalu, tad kas mums jādara?
Ir daudz veidu, kā to īstenot, piemēram, izmantojot tādus ietvarus kā pavasaris, bet faktiskajos projektos nav iespējams ieviest sistēmu nejauši, un daudzas reizes mums pašiem ir jāraksta daži mehānismi.
Šeit es domāju par filtru MVC, ja vien jūs ievietojat atribūta tagu uz kontroliera vai darbības, jūs varat darīt dažas citas lietas pirms un pēc metodes izpildes. Tāpēc vienkārši simulēsim filtra ieviešanu.
Pirmkārt, oriģinālā metode tiek pārveidota par elegantu funkciju etiķešu veidu:
Izmantojot funkciju tagus, ir jābūt klasēm, kas atbilst funkciju tagiem, kā arī AOP implementācijām, kuras var neatkarīgi iekļaut failā vai montāžā.
Pirmkārt, metodei pievienotā etiķete, kas ieviesta kā tukša:
//贴在方法上的标签 [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] publiskā slēgtā klase MyInterceptorMethodAttribute : Atribūts { } Pēc tam definējiet klasei pievienojamo etiķeti:
Šeit ir definēta MyAopHandler klase, kas ieviesta šādi:
Ņemiet vērā, ka iepriekš minētā koda konkrētā operācijas daļa ir līdzvērtīga "starpniekservera klasei", kas būtiski maina metodes izpildes kontekstu. Objektorientētās programmu struktūras, piemēram, delegāti, var izmantot, lai atklātu konkrēto ieviešanu ārpasaulei sekundārai attīstībai. |
Iepriekšējo:ES5, ES6, ES2016, ES. Tālāk: Kas notiek ar Javascrip{filter}t versiju?Nākamo:PowerShell darba sākšanas apmācība - v0.3 versija
|