目录

POP(Procedure Oriented Programming)

POP的不足:

OOP(Object Oriented Programming)

OOP的不足

OOP与POP的区别

AOP(Aspect Oriented Programming)

AOP的优势与劣势

AOP和OOP的区别

ASM框架简述

ASM中的核心类

ASM的作用


POP(Procedure Oriented Programming)

POP,即面向过程编程,是一种以过程为中心的编程思想。

面向过程是分析出解决问题的步骤,然后用函数或者方法,把这些步骤一步一步的实现,使用的时候再依次调用函数或者方法,这就是面向过程编程。最开始的时候都是面向过程编程。面向过程是最为实际的一种思考方式。就算是面向对象编程,里面也是包含有面向过程的编程思想。面向过程是一种基础的编程思考方式,它从实际出发来考虑如何实现需求。

POP的不足:

面向过程编程只能处理一些简单的问题,无法处理一些复杂的问题。如果问题很复杂,全部以流程来思考的话,会发现流程很混乱,甚至流程都不能进行下去。

OOP(Object Oriented Programming)

OOP,即面向对象编程就是把构成问题的事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。

OOP的不足

产生新的需求会导致程序代码不断的进行修改,容易造成程序的不稳定。

在完成开发后再去修改代码时就需要去修改类,大范围或者经常性的修改会造成系统的不稳定。

OOP与POP的区别

在对比面向过程的时候,面向对象的方法是把事物最小化为对象,包括属性和方法。当程序的规模比较小的时候,面向过程编程还是有一些优势的,因为这时候程序的流程是比较容易梳理清楚的。以早上去上班为例,过程就是起床、穿衣、刷牙洗脸、去公司。每一步都是按照顺序完成的,我们只需要按照步骤去一步一步的实现里面的方法就行了,最后在依次调用实现的方法即可,这就是面向过程开发。

如果使用面向对象编程,我们就需要抽象出来一个员工类,该员工具有起床、穿衣、刷牙洗脸、去公司的四个方法。但是,最终要实现早上去上班的这个需求的话,还是要按照顺序依次来调用四个方法。最开始的时候,我们是按照面向过程的思想来思考该需求,然后在按照面向对象的思想来抽象出几个方法,最终要实现这个需求,还是要按照面向过程的顺序来实现。

AOP(Aspect Oriented Programming)

AOP,即面向切面编程,是对OOP的一种补充,在不修改原始类的情况下,给程序动态添加统一功能的一种技术。

OOP关注的是将需求功能划分为不同的并且相对独立、封装良好的类,依靠继承和多态来定义彼此的关系。AOP能够将通用需求功能从不相关的类中分离出来,很多类共享一个行为,一旦发生变化,不需要去修改很多类,只需要去修改这一个类即可。

AOP的优势与劣势

优势:

  1. 将通用功能从业务逻辑中抽离出来,提高代码复用性,有利于后期的维护和扩展。

  2. 软件设计时,抽出通用功能(切面),有利于软件设计的模块化,降低软件架构的复杂度。

劣势:

AOP是对OOP思想的一种补充,他无法单独存在。如果说单独使用AOP去设计一套系统是不可能的。在设计系统的时候,如果系统比较简单,那么可以只使用POP或者OOP来设计。如果系统很复杂,就需要使用AOP思想。首先要使用POP来梳理整个业务流程,然后根据POP的流程,去整理类和模块,最后再使用AOP来抽取通用功能。

AOP和OOP的区别

  1. 面向目标不同:OOP是面向名词领域(抽象出来一个事物,比如学生、员工、这些都是名词)。AOP是面向动词领域(比如鉴定权重,记录日志,这些都是动作或行为)。

  2. 思想结构不同:OOP是纵向的(以继承为主线,所以是纵向的)。AOP是横向的。

  3. 注重方面不同:OOP是注重业务逻辑单元的划分,AOP偏重业务处理过程中的某个步骤或阶段。

ASM框架简述

ASM是一个通用的Java字节码操作和分析框架。一般用来动态生成类或者增强既有类的功能。ASM可以直接产生二进制class文件,也可以在类被加载入Java虚拟机之前动态改变类行为。

这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。

ASM中的核心类

  1. ClassReader:该类用来解析编译过的class字节码文件。

  2. ClassWriter:该类用来重新构建编译后的类,比如修改类名、属性及方法、甚至可以生成新的类的字节码文件。

  3. ClassAdapter:该类也实现了ClassVisitor接口,它将对它的方法调用委托给另一个ClassVisitor对象。

ASM的作用

利用ASM框架我们可以做到:

  1. 获得class文件的详细信息,包括类名、父类名、接口、成员名、方法名、方法参数名、局部变量名、元数据等。

  2. 对class文件进行动态修改,如增加、删除、修改类方法、在某个方法中添加指令等。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐