面向过程和计算机如影随形,从计算机诞生之日起,面向过程一直占主导地位。C语言、操作系统、协议栈、驱动系统、都是面向过程的代表。
为什么会有面向对象诞生并流行呢?面向过程是可以看作是流水线,那么流水线有个缺点:流水和原料是相对固定的,扩展起来很麻烦。比如啤酒生产线,操作的原来是啤酒原料,生产的步骤是生产啤酒的步骤,如果现在要生产醋,那么就得修改流水线上的设备和生产流程,或引进一条新的流水线。前面说过,面向过程设计解决了面向机器的复杂性问题,面向对象则解决的是扩展性和可维护性问题。
工业上,对生产线的扩展性要求并不高,更需要的是解决效率的问题,另外一条生产线一旦建成,少则几年,多则几十年的运行。因此,对扩展性要求并不高。但软件设计中,“唯一不变的就是改变”。需求总是在不断的变化着、不断的扩展着。那么就需要有方法提高软件的可扩展性和可维护性。这就是面向对象的核心。