POP,OOP,AOP关系
POP,OOP,AOP
POP面向过程编程(Process-oriented programming )
面向过程编程是以功能为中心来进行思考和组织的一种编程方法,它强调的是数据被加工和处理的过程,在程序设计中主要以函数或者过程为程序的基本组织方式,系统功能是由一组相关的过程和函数序列构成。面向过程强调的是功能(加工),数据仅仅作为输入和输出存在。典型的是C/C++的结构体,结构体里只有变量,没有处理变量的方法,需要专门编写处理变量的方法。
OOP面向对象编程(Object Oriented Programming)
面向对象编程以对象为中心,面向对象作为一种新型的程序设计方法,其是以对象模型为基础进行的抽象过程,并在应用过程中形成了描述自己的抽象概念定义,包括对象、类、封装、继承以及多态等。
面向对象编程是使用对象的编程范式——包含数据域、方法以及它们之间的交互来设计应用和程序。其程序设计方法包括数据抽象、封装、通信、模块化、多态和继承。简单来看,我们可以对面向对象编程作出如下几点理解:首先,它必须将数据抽象为模块结构;其次,必须存在某种方式来实现代码的多态执行;最后,它至少能部分压缩代码和函数。
AOP面向方面(切面)编程(Aspect Oriented Programming)
面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
POP,OOP,AOP关系
POP:
面向过程就是注重整个过程,必须考虑到所有步骤,从上往下一步一步执行。不方便后期维护和扩展。
OOP:
将事务分为若干个抽象的对象,在每个对象中考虑对应的方法,由于要实例化大量类,运行效率较低
类库庞大。
由于类库都过于庞大,程序员对它们的掌握需要一段时间,从普及、推广的角度来看,类库应在保证其功能完备的基础上进行相应的缩减。
类库可靠性。
越庞大的系统必会存在我们无法预知的问题隐患,程序员无法完全保证类库中的每个类在各种环境中百分之百的正确,当使用的类发生了问题,就会影响后续工作,程序员也有可能推翻原来的全部工作。
AOP:
我们要认识到OOP世界中,有些功能是横跨并嵌入众多模块里的,比如打印日志,比如统计某个模块中某些函数的执行时间等。这些功能在各个模块里分散得很厉害,可能到处都能见到。AOP的目标是把这些功能集中起来,放到一个统一的地方来控制和管理。如果说,OOP如果是把问题划分到单个模块的话,那么AOP就是把涉及到众多模块的某一类问题进行统一管理。