浅谈POP,OOP,AOP三者区别

Posted loushengjie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈POP,OOP,AOP三者区别相关的知识,希望对你有一定的参考价值。

 

POP(面向过程编程Process Oriented Programming):
分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候依次调用。

面向过程就是一步一步的来,在项目之前就已经固定好每一步了

优点

  1. 流程化编程任务明确,在开发之前基本考虑了实现方式和最终结果;
  2. 开发效率高,代码的短小精悍,善于结合数据结构来开发高效率的程序;
  3. 流程明确,具体步骤清楚,便于节点分析。

缺点

  1. 需要深入的思考,耗费精力;
  2. 代码重用性低,不易扩展,维护起来难度大;
  3. 对复杂业务,面向过程的模块化难度较高,耦合度比较高。

 


 

 

OOP(面向对象编程Object Oriented Programming):
针对业务处理过程的实体及其属性和行为进行抽象封装。
OOP有三个特征:封装,继承,多态。
(1)封装性:
封装是指将对象信息抽象成一个实体,其中属性方法不允许外部程序直接访问。简单来说,封装就是要找出某一类事物的公共属性然后提取出来。
(2)继承性:
子类继承了父类所有的成员方法和属性,可以拥有自己的属性,子类也可以重写父类方法。继承解决了代码的重用问题 .
(3)多态性:
多态存在的三个条件:1.继承 2.重写 3.父类引用指向子类对象
多态的实现方式1.接口实现,继承父类方法重写,同一个类中进行重载

优点

  1. 结构清晰,注重 对象和职责,不同的对象承担不同的职责;
  2. 封装性,将事务高度抽象,便于流程中的行为分析、操作;
  3. 容易扩展,代码重用率高,可继承,可覆盖;
  4. 实现简单,可有效地减少程序的维护工作量。

缺点

  1. 面向对象在面向过程的基础上高度抽象,从而和代码底层的直接交互非常少,从而不适合底层开发和游戏开发,甚至是多媒体开发;
  2. 复杂性,对于事务开发而言,事务本身是面向过程的,过度的封装导致事务本身的复杂性提高。

 

 

AOP(面向切面编程Aspect Oriented Programming):
采取横向抽取机制,即将分散在各个方法中的重复代码提取出来,然后在程序编译或运行阶段,再将这些抽取出来的代码应用到需要执行的地方。

优点

  1. 简单,易用;
  2. 降低模块的耦合度;
  3. 使系统容易扩展;
  4. 设计决定的迟绑定:设计师可以推迟为将来的需求作决定;
  5. 更好的代码复用性。

缺点

  1. 增加额外重复代码,且紧耦合;
  2. 每个业务逻辑需要一个装饰器实现或代理;
  3. 使用麻烦,须增加容器。

 

总结

POP编程是以功能为中心来思考和组织程序,注重功能的实现,达到效果就可以了;
OOP则注重封装,以对象为中心,强调整体性,代码整体变得更规范;但是OOP的耦合性还是很高,一旦代码需要修改,会对很多类造成影响,代码冗余问题严重,而且核心业务中总夹杂着一些它并不关心的通用业务,比如日志记录、性能统计、安全控制、事务处理、异常处理等;
AOP正好解决了OOP周边通用业务的解耦问题。
三者之间是一个相互补充和完善的关系。

 

 

以上是关于浅谈POP,OOP,AOP三者区别的主要内容,如果未能解决你的问题,请参考以下文章

面试官:讲讲AOP与OOP有什么区别?

AOP和OOP的区别

腾讯面试官问:你知道什么是AOP吗?AOP与OOP有什么区别,谈谈AOP的原理是什么?

浅谈Java SEJava EEJava ME三者的区别

浅谈Java SEJava EEJava ME三者的区别

java基础 --- 浅谈Java SEJava EEJava ME三者的区别