|
|
Yayınlandı 18.04.2017 14:54:11
|
|
|

Basit bir kodla başlayalım:
Diyelim ki bu bir web programı, önce oturumu kontrol etmek, sonra izinleri kontrol etmek, bir işlem başlatmak, bir günlük yazmak, sonra işlemi kendisini yürütmek ve son olarak bir günlük yazmak istiyoruz. Açıkçası, yukarıdaki işlemlere tüm metod çağrılarını DoSomething() içinde yazamayız, bu yüzden kod büyük bir berbat haline gelecek, peki ne yapmalıyız?
Bunu uygulamanın birçok yolu var, örneğin bahar gibi çerçeveler kullanmak gibi, ancak gerçek projelerde bir çerçeveyi rahatça tanıtmak mümkün değildir ve çoğu zaman bazı mekanizmaları kendimiz yazmamız gerekir.
Burada MVC'deki Filtreyi düşünüyorum, Controller veya Action'a bir özellik etiketi koyarsanız, yöntem çalıştırılmadan önce ve sonra başka şeyler yapabilirsiniz. O halde sadece bir filtre uygulamasını simüle edelim.
Öncelikle, orijinal yöntem özellik etiketlerinin zarif bir biçimine dönüştürülür:
Özellik etiketlerinde, özellik etiketlerine karşılık gelen sınıflar ve bağımsız olarak bir dosyada veya montajda yer alabilen AOP uygulamaları olmalıdır.
İlk olarak, yönteme eklenmiş ve boş olarak uygulanan etiket:
//贴在方法上的标签 [AttributeUsage(AttributeTargets.Method, AllowMultiple = yanlış)] public sealed class MyInterceptorMethodAttribute : Attribute { } Bundan sonra, sınıfa eklenecek etiketi tanımlayın:
İşte şu şekilde uygulanmış bir MyAopHandler sınıfı tanımlanmıştır:
Yukarıdaki kodun özel işlem kısmının, "proxy sınıfı"na eşdeğer olduğunu ve bu da yöntem yürütme bağlamını esasen değiştirir. Delege gibi nesne yönelimli program yapıları, özel uygulamayı ikincil geliştirme için dış dünyaya tanıtmak için kullanılabilir. |
Önceki:ES5, ES6, ES2016, ES. Sonraki: Javascrip{filter}t sürümünde neler oluyor?Önümüzdeki:PowerShell Başlangıç Eğitimi - v0.3 sürümü
|