gpt4 book ai didi

AOP 基础知识

转载 作者:行者123 更新时间:2023-12-02 20:06:24 26 4
gpt4 key购买 nike

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

我对 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 基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4819814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com