回到目錄html
面向側面的程序設計(aspect-oriented programming,AOP,又譯做面向方面的程序設計、觀點導向編程、剖面導向程序設計)是計算機科學中的一個術語,指一種程序設計範型。該範型以一種稱爲側面(aspect,又譯做方面)的語言構造爲基礎,側面是一種新的模塊化機制,用來描述分散在對象、類或函數中的橫切關注點(crosscutting concern)。
側面的概念源於對面向對象的程序設計的改進,但並不僅限於此,它還能夠用來改進傳統的函數。與側面相關的編程概念還包括元對象協議、主題(subject)、混入(mixin)和委託。redis
在方法執行前或者執行後注入新的代碼段,讓新的代碼段的功能注入到原方法裏,其中原方法須要是接口方法或者虛方法,緣由是咱們要重寫原方法!編程
這種攔截器比較簡單,只在方法執行前,後進行日誌行爲的注入,不須要返回結果.json
這種攔截器比起日誌攔截器來講就複雜一些,它須要經過緩存的key來返回結果,同時集成了緩存的邏輯及緩存持久化組件等.c#
/// <summary> /// 爲方法添加緩存行爲 /// </summary> /// <returns></returns> [CachingAspect] public virtual List<People> GetHello() { return new List<People> { new People("test1","ok",DateTime.Now), new People("test2","sad",DateTime.Now), new People("test2","force",DateTime.Now), }; } [Fact] public void FuncInvoke() { var fun = ProxyFactory.CreateProxy<AspectTest, AspectTest>(); var obj1 = fun.GetHello(); Thread.Sleep(1000); var obj2 = fun.GetHello(); Assert.Equal(obj1, obj2); }
回到目錄緩存