面向方面的编程是我很难找到任何好的信息的主题。我的旧软件工程教科书只是简短地(而且含糊地)提到了它,而维基百科和我在上面找到的其他各种教程/文章给出了关于它是什么、如何使用、以及何时使用它的超学术性的、高度抽象的定义。我只是不明白的定义。
我对AOP (很差)的理解是,生产一个高质量的软件系统的许多方面并不能很好地融入到一个很好的小的内聚包中。有些类,如记录器、验证器、DatabaseQueries等,将在您的代码库中全部使用,因此是高度耦合的。我(同样,非常)对AOP的理解是,它关注的是如何处理这些类型的“通用耦合”包的最佳实践。
问题:是真的吗,还是我完全疯了?如果我完全错了,能不能有人给出一个简洁的,外行人解释什么是AOP,一个所谓的方面的例子,甚至可能提供一个简单的代码示例?
发布于 2011-01-27 17:55:07
关注点分离是软件开发中的一个基本原则,大卫帕纳斯( David Parnas 关于将系统分解为模的准则 )的一篇经典论文可能会向您介绍这个主题,并阅读鲍勃叔叔的坚实原则。
但是,还有一些横切关注点可能包含在许多用例中,如身份验证、授权、验证、日志记录、事务处理、异常处理、缓存等等,这些都产生了软件中的所有层。如果你想在没有重复的情况下解决这个问题,并且采用枯燥的原则,你必须以一种复杂的方式来处理它。
您必须使用声明式编程,这在.net中可能是通过属性对方法或属性进行注释,随后发生的事情是根据这些注释在运行时更改代码的行为。
您可以在Sommerville软件工程书中找到关于这个主题的一个很好的章节。
有用的链接C2 wiki CrossCuttingConcern,MSDN,面向方面软件开发中如何解决横切问题
发布于 2015-08-11 07:13:19
AOP是一种提取和删除横切关注点(日志记录、异常处理、.)的技术。从我们的代码到它自己的方面。保留我们的原始代码,只关注业务逻辑。这不仅使我们的代码更具可读性和可维护性,而且代码也很枯燥。
通过一个例子可以更好地解释这一点:
在.net世界中使用城堡温莎的面向方面编程或面向方面编程在.net世界中的应用
发布于 2011-01-27 17:49:13
AOP是关于横切关注点的,即在整个应用程序中您需要做的事情。例如日志记录。假设您想在输入和退出方法时进行跟踪。这在各个方面都是很容易的。您基本上为一个事件指定了一个“处理程序”,比如输入一个方法。如果有必要,您还可以使用“通配符”指定您感兴趣的方法,然后只需编写处理程序代码,例如可以记录一些信息。
https://stackoverflow.com/questions/4819814
复制相似问题