面向方面/面向对象编程?

Aspect Oriented / Object Oriented Programming?

什么是面向切面编程?面向方面编程 (ASP) 可以替代面向对象编程 (OOP) 吗?请有理有据地回答。

在计算领域,面向方面的编程 (AOP) 是一种编程范例,旨在通过允许分离横切关注点来提高模块化。 AOP 构成了面向方面软件开发的基础。 AOP 包括支持在源代码级别模块化关注点的编程方法和工具。面向方面的编程需要将程序逻辑分解为不同的部分(所谓的关注点,功能的内聚区域)。几乎所有的编程范式都支持通过提供可用于实现、抽象和组合这些关注点的抽象(例如,函数、过程、模块、类、方法),将关注点在某种程度上分组和封装到单独的、独立的实体中.有些人关注 "cut across" 程序中的多重抽象,并反对这些实现形式。这些关注点称为 交叉关注点

Logging 举例说明了横切关注点,因为日志记录策略必然会影响系统的每个记录部分。 记录因此横切所有记录的 类 和方法。


首先AOP不会取代OOP。 AOP 扩展了 OOP。

人们不应该将 AOP 视为 OOP 的替代品,而应将其视为一个不错的附加组件,它使我们的代码更加简洁、松散耦合并专注于业务逻辑。因此,通过应用 AOP,您将获得两大好处:

1) 每个问题的逻辑现在都在一个地方,而不是分散在整个代码库中。

2) 类 更简洁,因为它们只包含主要关注点(或核心功能)的代码,次要关注点已移至方面。