查看了很多文献,了解面向过程和面向对象的联系和区别,这里总结一下我对其对认知和理解,不足之处还望指正.
1. 面向过程
所谓面向过程,通俗而论其实指的就是“实现功能的一个顺序、流程或者是事物执行的一个动作流”.
比如: 汽车启动,汽车到站这一功能,如果用面相过程这一思想去设计,我们关注的就是启动,和到站两个执行动作的顺序流程而不会关注“车”这个实物本身.
又比如: 我们乘车:需要在车站等车->上车买票->找座位->到站出示车票->下车. 用面相过程的思想我们关注就是乘车、下车顺序流程一个过程,而不是具体的人、车、票
所以概括而论:面相对象就是将功能按照指自上而下顺序实现,然后细化调用的过程.关注的重点是过程,提供的属性就是封装(就是把各个功能封装成方法用来实现功能)
2. 面相对象
比如: 上述提供的汽车启动,汽车到站这一功能,如果用面相对象这一实现去设计,我们关注的是: “汽车” 这一实体,继而通过“汽车”这一实体去设计其属性和方法.
所以从这一思想而论,面相对象其实就是分析参与实现的功能的具体实体,并且这些实体都有哪些属性和方法,进而实现它.
面相对象通常提供的方法: 封装、继承、多态.
3. 区别与联系
- 无论面相对象还是面相过程,其实都是编程设计的一种思想,并不是具体的实现方法,只不过我们在编程时由于语言已经具有这一设计,所以我们容易忽略,或者我们在编程时也去使用了,但是由于已经成为习惯,进而容易忽略它
- 如果我们设计的程序比较单一、简单我们可以选择面相过程的设计方式去完成,由于面相过程的简单单一,因而其性能反而要比面相对象高
- 如果业务复杂,或大型企业设计,建议还是用面向对象的方式设计,具有解藕性,而且从复制、扩展及维护比面相过程要容易很多.
- 其实实际应用中,我们更多的是两者结合的使用颇多,比如我们在面相对象的设计中,我们也经常按顺序执行方法或者加载模块,因此两者又是相互依存的.