面向方面的編程簡單例子:
對於做菜這一件事,大概分爲3步驟:洗菜,炒菜,上菜。而我們比較關注與比較關鍵的步驟是炒菜。而洗菜和上菜是不關注的步驟但是又是必不可少的步驟。要做好一個菜,我們請大廚來炒菜,但洗菜和上菜會讓其他服務員來做,這樣做的目的是節省資源,能讓大廚炒更多的菜。面向方面的編程即是 對於 洗菜--->炒菜---->上菜 這一個連貫的流程,把它切開來,我們只關注炒菜這一個實現,其他的兩個實現使用代理,這就是面向方面的精髓。
代理模式的簡單實現:
做菜接口
炒菜類只實現了做菜接口的炒菜關鍵實現
代理類該接口實現了做菜的其他步驟,並且調用了炒菜類,將整個流程串聯了起來
當需要做菜時,只需
實例化一個代理類,將炒菜類傳入即可。
Subject sub = new ProxySubject(new RealSubject()) ;
sub.request() ;
運用Spring實現簡單的代理
做菜接口
炒菜類只實現了做菜接口的炒菜關鍵實現
通過實現Spring的MethodBeforeAdvice接口來實現洗菜
通過實現Spring的AfterReturningAdvice接口來實現上菜
在Spring配置中進行配置
調用做菜時: