编程思想
对于做人我们都有自己的想法和做法,想做个怎样的人,怎么做,用什么标准和原则来要求自己都是我们时常思考的问题。
编程也有编程的原则。这些编程的原则呢,就是编程思想。简单来说编程思想就是用计算机来解决人们实际问题的思维方式。
主要编程思想:
OPP:Process Oriented Programming 面向过程编程
OOP:Object Oriented Programming 面向对象编程
SOA:Service-Oriented Architecture 面向服务架构
AOP:Aspect Oriented Programming 面向切面编程
面向对象
思想:以对象为中心的编程思想(事物对象化),一切皆对象(万物皆对象)。
流程:先寻找对象,分析数据和行为,给对象进行分类,在类中把解决问题的思路/流程封装成一个个方法,需要使用时创建该类的对象,让对象调用方法来完成解决问题的行为。
优点:更符合人解决问题思路,数据和处理被封装在一个整体中。
缺点:寻找对象,分析对象需要经验,面向对象的特性不太好理解。
面向过程
思想:以事件为中心的编程思想(模块化思想),关注整体的流程。
流程:就是分析出解决问题需要的步骤/流程,然后用函数将之一一实现,使用的时候直接调用即可。
优点:简单,符合计算机处理思路。
缺点:数据和处理是分离,解题思路和现实有区别。
区别与联系
-
区别
面向过程适合处理简单的事情,直接关注流程,简单有效。
面向对象适合处理复杂的事情,先使用面向对象的方式对整体关系作出分类,然后,根据不同的类深入细节的处理。 -
联系
面向对象无法取代面向过程,他们是相辅相成的。面向对象关注于从宏观上把握事物之间的关系,在具体到如何实现某个细节时,仍然采用面向过程的思维方式。面向对象如果离开了面向过程,就无法实现真正的落地,成为无源之水。
面向服务架构
思想:面向服务以服务为出发点,组织和协调相关的对象来提供目标服务,对外提供必要的参数输入接口,将服务的结果作为输出,而“服务”本身的计算过程和组织则被封装在一起,对用户透明。
具体描述:
其实面向服务也是以功能(服务)为中心,但其强调的是功能的整体性,封装性、自包性,而不是过程性和协作性。
整体性:指的是服务对外是作为一整体来体现的。
封装性:指的是服务完成的计算和处理过程、自有属性都不直接暴露给外部,除了通过公共的服务接口进行交互外,用户无法也不用知道内部的具体组织和协调的。
自包性:指的是服务的完成不依赖于服务的调用方,服务系统的本身就可以完成服务所需的功能。
因此面向服务在程序组织上处于更高的层次,是一种粗粒度的组织方法。考虑的是系统间的组织和管理。
面向切面
属于面向对象的范畴,面向对象组织对象从纵向角度采用分类归纳法实现的,关注的是整体对象的继承关系。而面向切面则从横向的角度去观察这些对象,找到公共的切入点,添加切面行为来处理一些通用的问题。