OOP解决了哪些问题

时间:2017-01-20 23:36:47

标签: oop aop

我熟悉这个术语:关注点分离。它几乎提倡代码中的模块化。

然而,当我阅读有关AOP的文章时,它明确表示它可以让您分开横切关注。

所以我的问题是,如果AOP将跨领域问题分开,OOP会分开什么样的担忧?

2 个答案:

答案 0 :(得分:2)

OOP将在现实场景中相互耦合的关注与直接关联分开。

例如,公司有很多员工,员工有薪水。

AOP是关于不是直接关联的问题,更像是 sentinels ,它们超越了对象关系。

AOP的典型示例场景是 logging 。日志记录仍然由一个名为 Logger 的对象表示,但实际上日志记录操作就像一个观察者,它过滤掉正常流并提取拦截幕后流的信息。

虽然可以在没有AOP的情况下实现日志记录,但实际上您最终会使用与给定操作的目的无关的内容弄脏您的代码(例如:注册用户无关记录)。

因此,您应该了解AOP强制执行并改善了关注点的良好分离,甚至可以从您的眼睛中剔除一些要求,从而使代码更加简单。

答案 1 :(得分:0)

简短回答:OOP分离抽象级别。精心设计的OOP代码将在整个模块中使用一组一致的抽象。

答案很长:OOP建立在四个支柱上:

  • 数据抽象
  • 封装
  • 继承
  • 多态性

这些允许程序员轻松构建抽象层,每个级别使用较低的抽象来提供更高的抽象。

例如,您可以从帧,消息,路由和会话(抽象)构建TCP / IP堆栈。使用会话时,您无需了解重新发送帧的方式以及冲突检测(封装)。此外,您可以在不知道是否使用IP4或IP6(多态)的情况下发送消息。并且所有级别都可以使用相同的CRC校验。遗产。所以这四个支柱一起允许一种编程方式,可以创建非常干净的抽象级别。但是,OOP软件常常变得混乱,抽象级别并没有完全分离。

AOP是对OOP的补充。 OOP专注于抽象级别和结构,AOP专注于与“关注”相关的行为。它们是查看代码的正交方式。