【HarmonyOS学习日志(7)】编程思想POP,OOP,AOP以及JavaASM框架简述
每一步都是按照顺序完成的,我们只需要按照步骤去一步一步的实现里面的方法就行了,最后在依次调用实现的方法即可,这就是面向过程开发。最开始的时候,我们是按照面向过程的思想来思考该需求,然后在按照面向对象的思想来抽象出几个方法,最终要实现这个需求,还是要按照面向过程的顺序来实现。面向过程是分析出解决问题的步骤,然后用函数或者方法,把这些步骤一步一步的实现,使用的时候再依次调用函数或者方法,这就是面向过程
目录
POP(Procedure Oriented Programming)
OOP(Object Oriented Programming)
AOP(Aspect Oriented Programming)
POP(Procedure Oriented Programming)
POP,即面向过程编程,是一种以过程为中心的编程思想。
面向过程是分析出解决问题的步骤,然后用函数或者方法,把这些步骤一步一步的实现,使用的时候再依次调用函数或者方法,这就是面向过程编程。最开始的时候都是面向过程编程。面向过程是最为实际的一种思考方式。就算是面向对象编程,里面也是包含有面向过程的编程思想。面向过程是一种基础的编程思考方式,它从实际出发来考虑如何实现需求。
POP的不足:
面向过程编程只能处理一些简单的问题,无法处理一些复杂的问题。如果问题很复杂,全部以流程来思考的话,会发现流程很混乱,甚至流程都不能进行下去。
OOP(Object Oriented Programming)
OOP,即面向对象编程就是把构成问题的事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
OOP的不足
产生新的需求会导致程序代码不断的进行修改,容易造成程序的不稳定。
在完成开发后再去修改代码时就需要去修改类,大范围或者经常性的修改会造成系统的不稳定。
OOP与POP的区别
在对比面向过程的时候,面向对象的方法是把事物最小化为对象,包括属性和方法。当程序的规模比较小的时候,面向过程编程还是有一些优势的,因为这时候程序的流程是比较容易梳理清楚的。以早上去上班为例,过程就是起床、穿衣、刷牙洗脸、去公司。每一步都是按照顺序完成的,我们只需要按照步骤去一步一步的实现里面的方法就行了,最后在依次调用实现的方法即可,这就是面向过程开发。
如果使用面向对象编程,我们就需要抽象出来一个员工类,该员工具有起床、穿衣、刷牙洗脸、去公司的四个方法。但是,最终要实现早上去上班的这个需求的话,还是要按照顺序依次来调用四个方法。最开始的时候,我们是按照面向过程的思想来思考该需求,然后在按照面向对象的思想来抽象出几个方法,最终要实现这个需求,还是要按照面向过程的顺序来实现。
AOP(Aspect Oriented Programming)
AOP,即面向切面编程,是对OOP的一种补充,在不修改原始类的情况下,给程序动态添加统一功能的一种技术。
OOP关注的是将需求功能划分为不同的并且相对独立、封装良好的类,依靠继承和多态来定义彼此的关系。AOP能够将通用需求功能从不相关的类中分离出来,很多类共享一个行为,一旦发生变化,不需要去修改很多类,只需要去修改这一个类即可。
AOP的优势与劣势
优势:
-
将通用功能从业务逻辑中抽离出来,提高代码复用性,有利于后期的维护和扩展。
-
软件设计时,抽出通用功能(切面),有利于软件设计的模块化,降低软件架构的复杂度。
劣势:
AOP是对OOP思想的一种补充,他无法单独存在。如果说单独使用AOP去设计一套系统是不可能的。在设计系统的时候,如果系统比较简单,那么可以只使用POP或者OOP来设计。如果系统很复杂,就需要使用AOP思想。首先要使用POP来梳理整个业务流程,然后根据POP的流程,去整理类和模块,最后再使用AOP来抽取通用功能。
AOP和OOP的区别
-
面向目标不同:OOP是面向名词领域(抽象出来一个事物,比如学生、员工、这些都是名词)。AOP是面向动词领域(比如鉴定权重,记录日志,这些都是动作或行为)。
-
思想结构不同:OOP是纵向的(以继承为主线,所以是纵向的)。AOP是横向的。
-
注重方面不同:OOP是注重业务逻辑单元的划分,AOP偏重业务处理过程中的某个步骤或阶段。
ASM框架简述
ASM是一个通用的Java字节码操作和分析框架。一般用来动态生成类或者增强既有类的功能。ASM可以直接产生二进制class文件,也可以在类被加载入Java虚拟机之前动态改变类行为。
这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。
ASM中的核心类
-
ClassReader:该类用来解析编译过的class字节码文件。
-
ClassWriter:该类用来重新构建编译后的类,比如修改类名、属性及方法、甚至可以生成新的类的字节码文件。
-
ClassAdapter:该类也实现了ClassVisitor接口,它将对它的方法调用委托给另一个ClassVisitor对象。
ASM的作用
利用ASM框架我们可以做到:
-
获得class文件的详细信息,包括类名、父类名、接口、成员名、方法名、方法参数名、局部变量名、元数据等。
-
对class文件进行动态修改,如增加、删除、修改类方法、在某个方法中添加指令等。
更多推荐



所有评论(0)