1. 面向对象编程(OOP)
针对业务处理过程中的实体,属性,行为进行封装,以获得更加清晰高效的逻辑单元划分
OOP主要特点
封装 继承性 多态性
2. 面向切面变成(AOP)
针对业务处理过程中的切面进行提取,更偏重于业务处理过程中的某个步骤或阶段,以获得逻辑处理过程中各部分之间低耦合的隔离效果,使代码具有更好的可移植性
AOP主要的特点
源码无关性:在不改变源码的前提下,给程序动态统一添加功能
隔离性:低耦合
AOP的主要功能
日志记录 性能统计 安全控制 事务处理 异常处理
3. OOP和AOP的区别
a. AOP是对OOP的补充
b. OOP是将程序分解成各个层次的对象,面向业务中的名词领域,侧重点在与抽象
c. AOP是将程序运行过程分解成各个切面,从程序运行角度考虑程序的结构,面向业务中的动词领域,侧重点在于解耦
举例说明
- 对于“雇员”这样一个 业务实体进行封装,自然是OOP/OOD的任务,我们可以为其建立一个“Employee”类,并将“雇员”相关的属性和行为封装其中。而用AOP设计思想对“雇员”进行封装将无从谈起。
- 对于“权限检查”这一动作片断进行划分,则是AOP的目标领域。而通过OOD/OOP对一个动作进行封装,则有点不伦不类。
- python中的装饰器,就是AOP的一个很好的实现