POP简介
POP是面向过程编程(Procedure Oriented Programming), 面向过程编程是以功能为中心来进行思考和组织的一种编程方式,它强调的是功能(即:系统的数据被加工和处理的过程),在程序设计中主要以函数或过程为程序的基本组织方式,系统功能是由一组相关的过程和函数序列构成,面向过程更强调细节,忽视了整体性和边界性。
POP优点
- 流程化编程任务明确,在开发之前基本考虑了实现方式和最终结果
- 开发效率高,代码的短小精悍,善于结合数据结构来开发高效率的程序
- 流程明确,具体步骤清楚,便于节点分析
POP缺点
- 需要深入的思考,耗费精力
- 代码重用性低,不易扩展,维护起来难度大
- 对复杂业务,面向过程的模块化难度较高,耦合度比较高
OOP简介
OOP是面向对象编程(Object Oriented Programming),面向对象编程是以对象为中心,是一种新型的程序设计方法。针对业务处理过程的实体及其属性和行为进行抽象封装,万物皆对象,四个特征:抽象、封装、继承、多态。
OOP优点
- 结构清晰:注重对象和职责,不同的对象承担不同的职责
- 封装性:将事物高度抽象,便于流程中的行为分析、操作
- 易扩展:代码重用率高,可继承,可覆盖
- 实现简单:可有效地减少程序的维护工作量
OOP缺点
- 面向对象在面向过程的基础上高度抽象,从而和代码底层的直接交互非常少,从而不适合底层开发和游戏开发,甚至是多媒体开发
- 复杂性,对于事务开发而言,事务本身是面向过程的,过度的封装导致事务本身的复杂性提高
AOP简介
AOP是面向切面编程(Aspect Oriented Programming), 面向切面编程,通过预编译
和运行期动态代理
实现程序功能的统一维护。AOP是OOP的延续,针对业务处理过程中的切面进行提取,关注处理过程中的某个步骤或阶段,以降低逻辑过程中各部分之间耦合度,专注与实现自身业务功能,周边业务功能可动态加进来。
AOP优点
- 简单,易用
- 降低模块的耦合度
- 使系统容易扩展
- 设计决定的迟绑定:设计师可以推迟为将来的需求作决定
- 更好的代码复用性
AOP缺点
- 增加额外重复代码,且紧耦合
- 每个业务逻辑需要一个装饰器实现或代理
- 使用麻烦,须增加容器
总结
POP:是以功能为中心来思考和组织程序,注重功能的实现,达到效果就可以了;
OOP:则注重封装,以对象为中心,强调整体性,代码整体变得更规范;(但是OOP的耦合性还是很高,一旦代码需要修改,会对很多类造成影响,代码冗余问题严重,而且核心业务中总夹杂着一些它并不关心的通用业务,比如日志记录、性能统计、安全控制、事务处理、异常处理等;)
AOP:正好解决了OOP周边通用业务的解耦问题。
三者之间是一个依次迭代和完善的关系。