编程_三大编程思想:POP、OOP、AOP

2022-07-20 14:43:24 浏览数 (1)

文章目录

  • 三大编程思想
    • POP:面向过程编程
      • 优点:
      • 缺点:
    • OOP:面向对象编程
      • 1、抽象性:
      • 2、封装性:
      • 3、继承性:
      • 4、多态性:
      • 优点:
      • 缺点:
    • AOP:面向切面编程
      • 优点:
      • 缺点:
    • 总结

三大编程思想

POP:面向过程编程(Procedure Oriented Programming)

OOP:面向对象编程(Object Oriented Programming)

AOP:面向切面编程(Aspect Oriented Programming)

POP:面向过程编程

​ 面向过程编程是以功能为中心来进行思考和组织的一种编程方式,它强调的是功能(即:系统的数据被加工和处理的过程),在程序设计中主要以函数过程为程序的基本组织方式,系统功能是由一组相关的过程和函数序列构成。

​ 从思维上来讲,面向过程更强调细节,忽视了整体性和边界性。典型代表是:C/C

​ 分析解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候按顺序依次调用就可以了。代码线性,严格按着顺序,侧重解决步骤,着眼局部和具体。

优点:

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

缺点:

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

OOP:面向对象编程

​ 面向对象编程是以对象为中心,是一种新型的程序设计方法。针对业务处理过程的实体及其属性行为进行抽象封装,万物皆对象~

​ OOP的四个特征:抽象、封装、继承、多态

1、抽象性:

​ 将一些事物的共性和相似点抽离出来,将这些属性归为一类。这个类只考虑这些事物的共性和相似之处,并且会忽略与当前业务和目标无关的方面,将注意力集中在当前目标有关的方面。

抽象包括两个方面:过程抽象数据抽象

​ 过程抽象:把一个系统按功能划分成若干个子系统,进行自顶向下逐步求精的程序设计。

​ 数据抽象:以数据为中心,将数据对象数据对象之间的关系数据对象的基本操作封装在一起(对象)来进行描述,形成抽象数据类型ADT(Abstract Data Type)。

2、封装性:

​ 一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装的目的是使对象的使用者生成者分离,使对象的定义和实现分开。

3、继承性:

​ 继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己的特有属性和操作外,可以继承其父类(或祖先类)的属性和操作,还可以对父类(或祖先类)中的操作重新定义其实现方法。

4、多态性:

​ 一个类实例的相同方法在不同的情形有不同的表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。实现了,通过一个公共类可以以相同的方式调用不同对象的不同实现。

​ 多态的实现:覆写overwrite、重载overload

优点:

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

缺点:

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

AOP:面向切面编程

​ 面向切面编程,通过预编译运行期动态代理实现程序功能的统一维护。AOP是OOP的延续,针对业务处理过程中的切面进行提取,关注处理过程中的某个步骤阶段,以降低逻辑过程中各部分之间耦合度。

​ 专注与实现自身业务功能,周边业务功能可动态加进来(如:用户验证、日志处理、等)

优点:

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

缺点:

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

总结

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

三者之间是一个相互补充和完善的关系。

参考:

理解POP、OOP、AOP编程

浅谈POP,OOP,AOP三者区别

面向对象的四个基本特征和五种设计原则

抽象数据类型(ADT)是什么?

0 人点赞