面向切面编程是一个我很难找到好的信息的主题。我的旧软件工程教材只简单地提到了它(并且含糊不清),我能够找到的维基百科和各种其他教程/文章都给出了极为学术化、高度抽象化的定义,说明它是什么,如何使用它以及何时使用它。这些定义我似乎无法理解。
我(非常有限的)对AOP的理解是,在生产高质量软件系统过程中有许多方面是不能很好地整合在一起的。例如Loggers, Validators, DatabaseQueries等各种类,将在您的代码库中被广泛使用,因此它们之间存在高耦合性。我(再次强调,非常)理解AOP关注于处理这些“普遍耦合”包的最佳实践。
问题:这是真的吗,还是我完全错了?如果我完全错误,可以有人给出一个简明扼要的解释,说明什么是AOP,一个所谓的aspect的例子,并可能提供一个简单的代码示例吗?