首页 > 代码库 > 【设计模式】面向对象式开发的发展史
【设计模式】面向对象式开发的发展史
由于我的IP号非常特殊,导致最近不能上网,连无线都不行。。所以,耽误了很多东西。今天居然可以用无线了,让我欣喜若狂,马上提笔,写下这篇文章。主要内容是面向对象式开发的演化史。。
远古的开发
最早期的机器语言编程,程序员还在纠结于计算机内存和外存的容量。
随着高性能的计算机越来越普及,编程也发展到一个较高的层次,出现了各种高级语言,软件编程也进入了百家争鸣的时代。。
刚开始的高级语言编程,大多是面条式代码,随着代码的复杂化,造成代码极度混乱,越来越不适应发展的需要。
面向过程式开发
而后来出现的面向过程式开发,是把需求理解成一条条业务流程,然后分析这些流程,将它们交织组合在一起,再划分成一个个功能模块,最终通过一个个函数,实现需求。
优点
总的来说,面向过程式开发,将代码分割成了多个模块,增强了复用性,方便了调试和修改。但结构也相对复杂。。
缺点
首先,面向过程关注业务流程,但不管分析做得如何到位,都永远无法从用户那里获得所有的需求,并且,需求是最可变的东西。业务流程的制定需要受到很多条件的限制,甚至程序的效率、运行方式都会反过来影响业务流程。有时候用户为了更好地实现商业目的,会主动改变业务流程,并且,一个流程的变化经常会带来一系列的变化。。所以,流程的易变性,使原本复杂的代码不易修改。
其次,面向过程通过划分功能模块,通过函数的相互调用来实现,但需求变化时,就需要更改函数。而你改动的函数,有多少地方在调用它,关联多少数据,这是很不容易弄清楚的地方。
或许开发者本人弄得清楚,但下一位维护代码者,是否也了解所有的函数间的彼此调用关系?函数的修改极有可能引起不必要的Bug出现。维护和调试中所耗费的大多数时间并不是花在修改Bug上,而是花在寻找Bug上,以及弄清如何避免在修改代码时导致不良副作用上了。就像这次师哥师姐开发的学生评教系统那样,寻找Bug才是最难的。。所以,种种迹象都表明,面向过程式开发不能适应软件的发展。。
总的来说,面向过程式开发使原本复杂的代码不易修改,并且,维护和调试所耗费的大多数时间都花费在寻找Bug上。所以,它不能很好地适应变化。
面向对象式开发
而面向对象的诞生,很好的解决了需求变化所带来的问题。
定义
面向对象关注的是对象,对象的优点在于,可以定义自己负责的事物,做要求它做的事情。对象是自己负责自己,并且,清楚的定义了自己的责任。
面向对象式开发,是把需求理解成一个个对象,让这些对象互相调用,符合了业务需要。当需求变化时,尽管无法预测会发生什么变化,但是通常可以预测到哪里发生了变化。它的特点之一,就是可以封装这些变化区域,从而更容易地将代码与变化产生的影响隔离开来。
VS面向过程
显然,对象比流程更加稳定,也更加封闭。业务流程从表面上看只有一个入口、一个出口,但是实际上,流程的每一步都可能改变某个数据的内容、改变某个设备的状态,对外界产生影响。而对象则是完全通过接口与外界联系,接口内部的事情与外界无关。
总的来说,面向过程式开发相对容易,但不容易应对变化;面向对象式开发困难,但却能更好的应对千变万化的世界。所以,现代的软件需要面向对象式开发,这是属于它的时代,但未来是谁的天下?!我们拭目以待。。
小结
通过学习设计模式这本书,让我了解到面向对象式开发是为了更好的解决需求变化所带来的问题,让我从根本上明白面向对象技术的巨大优点。。
【设计模式】面向对象式开发的发展史