面向方面的编程是一个主题,我很难在上面找到任何好的信息。我的旧软件工程教科书仅简短地(含糊地)提到了它,而我在维基百科和其他各种教程/文章上却能找到关于它的含义,使用方法的超学术性,高度抽象的定义。它,以及何时使用它。我似乎不了解定义。
我对AOP的理解(非常差)是,产生高质量软件系统的很多方面都无法很好地集成到一个很好的,具有凝聚力的软件包中。某些类,例如Loggers,Validators,DatabaseQueries等,将在您的代码库中使用,因此将高度耦合。我对AOP的理解(仍然是和很差)是因为它与如何处理这些“通用耦合”程序包的最佳实践有关。
问题:是真的,还是我完全不喜欢?如果我完全错了,请有人为AOP是什么提供一个简洁明了的解释,所谓的方面的一个示例,甚至可能提供一个简单的代码示例吗?
最佳答案
关注点分离是软件开发中的基本原则,David Parnas撰写了一篇经典论文On the Criteria To Be Used in Decomposing Systems into Modules,可能会向您介绍该主题并阅读Uncle Bob's SOLID Principles。
但是,在许多用例(例如身份验证,授权,验证,日志记录,事务处理,异常处理,缓存等)中可能包含跨切问题,这些问题催生了软件中的所有层。而且,如果您想在不重复使用DRY原理的情况下解决问题,则必须以复杂的方式进行处理。
您必须使用声明式编程,即简单地在.net中可以通过属性对方法或属性进行注释,之后发生的事情就是根据这些注释在运行时更改代码的行为。
您可以在Sommerville's Software engineering book中找到有关该主题的精彩章节
有用的链接
C2 wiki CrossCuttingConcern,MSDN,How to Address Crosscutting Concerns in Aspect Oriented Software Development
关于aop - AOP基础知识,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4819814/