2012-08-24 29 views
3

我想知道人們對應用AOP的偏好。AOP範圍

例如,如果在閱讀文章時應增加點擊次數,我是否應該使用AOP來查看方法?或者只是在view()中調用increaseHitCount()?我認爲increaseHitCount()不是view()方法的主要目的,但是輔助的事情。

public DAO dao; 

public Article view() { 
    dao.increaseHitCount(); //<-- I think this is not for here. 

    return dao.getArticle(); 
} 

但是,我只是擔心代碼越來越難以理解和通過在所有來源應用的AOP閱讀。

+0

如果您要提供您正在嘗試執行的具體示例,則可以改進此問題(帶代碼,最好)。否則,這個問題可能會被視爲「不具有建設性」,因爲[按照常見問題](http://stackoverflow.com/faq#dontask)。 –

+0

好吧,我會更好!謝謝你的評論 –

回答

2

AOP將幫助您使代碼更加正交,還有助於防止代碼重複。我的經驗是,這些方面用於一般系統方面的功能。想想點擊計數是否與頁面邏輯的其餘部分鬆散耦合,是否足夠普遍。如果是可接受的(或更可取的)將其用作方面。另一方面,AOP會帶來開銷,但AspectJ比較快。
我這種情況下,我會考慮AOP,如果它在項目中使用。

+0

謝謝你這幫了我很多AOP的思考 –

1

AOP旨在使更好地分離cross-cutting concerns。在這種情況下,您需要處理兩個問題:文章視圖和點擊次數統計。因此你應該將它們分開。因爲你不能通過OOP構造來恰當地分離它們(你的視圖方法總是必須知道在返回視圖之前需要執行某些操作)AOP是正確的解決方案。然而,許多人認爲代碼變得難以理解。這幾乎取決於您使用它的程度和用途,也可能取決於基礎OO體系結構的質量