面向过程编程
面向过程是一种以事件流程为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后一步一步地按步骤编写代码实现。
面向对象编程
在日常生活中,许多事情是可以被抽象出来的,对于某个具体的人或事物,都可以看作是一个对象,每个对象都有自己的属性和行为,对象和对象之间也可以通过方法来交互。面向对象是一种以对象为中心的编程思想,把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个对象在整个解决问题的步骤中的属性和行为。
关于接口的理解
接口从更深层次的理解,应是定义(规范、约束)与实现(名实分离的原则)的分离。
接口的本身反映了系统设计人员对系统的抽象理解。
接口应有两类:
- 第一类是对一个个体的抽象,它可对应为一个抽象体(abstract class)
- 第二类是对一个个体某一方面的抽象,即形成一个抽象面(interface)
一个个体可能有多个抽象面。抽象体和抽象面是有区别的。
面向接口编程
尽管面向对象和面向过程能够解决大部分的场景。但是在实际的开发中,还是会倾向于选择使用面向接口来编程,原因有:
- 解耦
- 可拓展
- 复用性高
- 分层开发中,上层不用管具体的实现
- 规范性好
三个面向的区别
- 面向对象是指:我们考虑问题时,以对象为单位,考虑它的属性和方法
- 面向过程是指:我们考虑问题时,以一个具体的流程(事务过程)为单位,考虑它的实现
- 接口设计与非接口设计是针对复用技术而言的,与面向对象(过程)不是一个问题,更多的体现就是对系统整体的架构
- 可以理解为,接口就是一个招牌,比如KFC。而面向对象则会把炸鸡店分解成地址、电话号码、员工数等属性,然后有卖鸡腿卖薯条等等方法。如果挂了KFC的招牌,他就必须有卖KFC的鸡腿、卖KFC的薯条等等方法,而普通的没有挂KFC招牌的炸鸡店则可以不卖薯条,就不一定要有卖薯条方法。所以接口就是一种规范,约束着KFC里一定要有的东西。