AOP基础知识

Eug*_*gie 22 aop

面向方面的编程是我很难找到任何好的信息的主题.我的旧软件工程教科书只是简单地(和模糊地)提到它,维基百科和我能够在其上找到的各种其他教程/文章给出了超学术,高度抽象的定义,它是什么,如何使用它,何时使用它.定义我似乎并不理解.

我(非常差)对AOP的理解是,生成高质量软件系统的许多方面都不能很好地融入一个漂亮的小内聚包中.一些类,如Loggers,Validators,DatabaseQueries等,将在您的代码库中使用,因此将是高度耦合的.我对AOP的理解(再次,非常差)是它关注如何处理这些类型的"通用耦合"包的最佳实践.

问题:这是真的,还是我完全没有?如果我完全错了,有人可以给出简明扼要的解释,说明AOP是什么,所谓的方面的例子,甚至可能提供一个简单的代码示例?

Jah*_*ine 13

关注点分离是软件开发的一个基本原则,David Parnas撰写了一篇关于将系统分解为模块的标准,可以向您介绍该主题并阅读Bob叔叔的SOLID原则.

但是,Cross Cutting的问题可能包含在许多用例中,例如身份验证,授权,验证,日志记录,事务处理,异常处理,缓存等,它们会在软件中生成所有层.如果你想解决问题而不重复并采用DRY原则,你必须以复杂的方式处理它.

您必须使用声明性编程,简单地在.net中可以通过属性注释方法或属性,以后发生的事情是根据这些注释在运行时更改代码的行为.

您可以在Sommerville的软件工程书中找到关于此主题的精彩章节

有用的链接 C2 wiki CrossCuttingConcern,MSDN,如何解决面向方面软件开发中的横切关注问题

  • 在http://stackoverflow.com/questions/232884/aspect-oriented-programming-vs-object-oriented-programming/232918#232918了解AOP的解释性示例 (2认同)