c++中開源的aop框架aspectc++需要單獨編譯才能將切面的**織入到核心邏輯**中,感覺使用起來不方便,不能滿足快速開發要求。我希望只要實現方法攔截即可,能織入before()和after()操作就行,不追求動態織入。思路是這樣的,通過乙個包裝類,裡面定義before()和after()方法,和->運算子過載方法,在過載操作函式中實現before()和after()操作。具體**如下:
1 #include 2baseaspect為切面的基類,提供了before()和after()方法,供派生的切面實現;class
baseaspect514
15//
被織入物件的刪除器,用來自動觸發切面中的after方法
16struct
1724
};25
public:26
2728
2930
//default does nothing
31};
3233
34//
default does nothing35}
3637
//過載指標運算子用來織入切面(before和after)
3943
};44
45//
織入切面的工廠函式, 返回包含被織入物件的切面
48
下面看看具體的切面實現:乙個實現對函式執行時間的統計,乙個實現日誌功能。
1 #include 2 #include 3 #include 4720timeelapsedaspect切面實現對函式執行時間統計。2122
27 };
1314
1718 };
loggingaspect實現日誌記錄
現在來看看測試**
class測試結果:ix
virtual ~ix(){}
virtual
void g()=0
;private:};
class x : public
ix};
void
testaop()
總結:這個簡單的aop實現,可以實現對類的方法進行攔截,具體切面自由定製,不過還有個地方不太完善,還不支援切面的組合,這個可以用typelist去實現。
輕量級框架
1.概述 輕量級框架一般由struts,spring組成,側重於減小開發的複雜度,相應的它的處理能力便有所減弱 如事務功能弱 不具備分布式處理能力 比較適用於開發中小型企業應用。2.定義 輕量級框架是相對於重量級框架的一種設計模式 輕量級框架不帶有侵略性api,對容器也沒有依賴性,易於進行配置,易於...
C 公共元件 輕量級AOP庫
aop aspect oriented programming,面向方面程式設計 可以解決物件導向程式設計中的一些問題,是oop的一種有益補充。物件導向程式設計中的繼承是一種從上而下的關係,不適合定義從左到右的橫向關係,如果繼承體系中的很多無關聯的物件都有一些公共行為,這些公共行為可能分散在不同的元...
輕量級Java框架
該專案是乙個輕量級mvc框架,重點實現了依賴注入和aop特性,適合需要學習這兩方面知識的人 依賴注入的實現 通過beanhelper 位於helper包中 獲取所有bean map 是乙個記錄了類與物件的對映關係的map,object 結構 遍歷這個對映關係,取出bean類與bean例項,通過反射獲...