(原創) C 輕量級AOP框架

2021-09-06 08:53:16 字數 1253 閱讀 6322

c++中開源的aop框架aspectc++需要單獨編譯才能將切面的**織入到核心邏輯**中,感覺使用起來不方便,不能滿足快速開發要求。我希望只要實現方法攔截即可,能織入before()和after()操作就行,不追求動態織入。思路是這樣的,通過乙個包裝類,裡面定義before()和after()方法,和->運算子過載方法,在過載操作函式中實現before()和after()操作。具體**如下:

1 #include 2

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

baseaspect為切面的基類,提供了before()和after()方法,供派生的切面實現;

下面看看具體的切面實現:乙個實現對函式執行時間的統計,乙個實現日誌功能。

1 #include 2 #include 3 #include 4720

2122

27 };

timeelapsedaspect切面實現對函式執行時間統計。

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例項,通過反射獲...