AOP的范围

3

我希望了解人们在应用AOP方面的偏好。

例如,如果阅读文章后应该增加点击次数,我应该将AOP应用于view方法吗?还是只需在view()中调用increaseHitCount()?

在我看来,增加点击次数并不是view()方法的主要目的,而是辅助性问题。

public DAO dao;

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

    return dao.getArticle();
}

然而,我只是担心代码因为在源码中应用了AOP而变得难以理解和阅读。


如果您能提供一个具体的示例(最好是带有代码),那么这个问题就可以得到改进。否则,根据常见问题解答的规定,此问题可能会被关闭为“不具有建设性”。 - Greg Hewgill
好的,我会改进它!谢谢您的评论。 - Patrick Jeon
2个回答

2
AOP将帮助您使代码更加正交,并有助于对抗代码重复。我的经验是方面用于一般的系统范围功能。考虑点击次数是否与页面逻辑松散耦合,以及是否足够通用。如果是,则可以将其作为一个方面来使用(可接受或优选)。另一方面,AOP会带来开销,但例如AspectJ非常快。
在这种情况下,如果项目中已经使用了AOP,我会考虑使用它。

谢谢你,它对我关于AOP的思考有很大帮助。 - Patrick Jeon

1
AOP旨在实现更好的横切关注点分离。在这种情况下,您正在处理两个问题:文章视图和点击计数上的统计数据。因此,您应该将它们分开。由于您无法仅通过OOP结构正确地将它们分开(您的视图方法将始终需要知道在返回视图之前要执行某些操作),因此AOP是正确的解决方案。 然而,许多人认为代码变得难以理解。这几乎取决于您使用它的程度和质量,也可能取决于底层OO架构的质量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接