同步自:http://www.blogjava.net/AndersLin/archive/2006/06/24/54806.Html
在AOSD:應用AOP實現業務邏輯中, 我提出關注的接口;
其原文在javaeye上的討論狼平方也提出可以用event,或者intercepter。
當然不同的方式可以解決不同的問題。這里要討論一下aspectJ和Event以及intercepter的不同。
1. 先來看看event的方式:需要兩個對象Event和EventHandler(EventListener),event和eventHandler,屬于數據契約。換句話說,犧牲了編譯檢查的好處,當然可以應對變化時有一定的好處。一旦需求變化,代碼上的變動需要的工作量不少,更為嚴重的是,如狼平方所說的侵入性太強。
2 接著看interceptor的AOP,相對于Event方式,雖然都是基于數據契約,都給自己做轉型,但是代碼量少了(因為代碼生成),重要的是沒有event那樣的侵入性。
3. 狼平方做了改進,利用AOP來做brocastEvent的工作。需要做的工作還是很多,甚至我以為這個工作還不如直接用Interceptor來得直接。
如我在小議領域模型(Domain Model) 所說的Domain Service處理兩個邏輯:業務規則和流程邏輯,而AOSD:應用AOP實現業務邏輯要試圖解決的問題是流程上邏輯,而以上無論是那種方式,都無法解決一個問題:流程信息。
假定現有兩個流程如下:
新聞熱點
疑難解答