面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术 发展到一定阶段后的产物。---------百度百科
理论性的想必大家都已看过,这里不必多说,今天我们就日常开发中的实际而讲,从另一个角度解析软件开发领域的面向对象。
每个新事物的产生都是有过程的,面向对象也不例外,那么没有面向对象之前我们大多是用什么方式开发呢?想必大家心里都有一个共同的词语-----面向过程。对于面向过程概念大家想必十分熟悉吧,现在还有很多人在用这种方式开发,它有自己独到的魅力---简单。做到哪里写哪里,只需考虑眼前的技术问题是否能解决就可以了。当你遇到的问题从不重复时它真的是再好用不过了。但是当大家不断的在开发领域探索时肯定会发现相同的问题不停出现,而按照面向过程的思想就地解决,一次两次三次,渐渐的你会发现自己做了好多重复的工作,而且随之而来的问题是扩展性差、可维护性差,写过的东西不能重用。
有了存在问题自然就会有人去解决。那你可以说我们建个公共类,有相同的问题就在公共类里写一个方法其它地方调用不就可以了?但是我们会发现有些问题只是相似,有部分相同部分不同怎么办?那你会说我们把相同的封装不同的单独写不就可以了?那这时候又有一个问题蹬蹬瞪跑出来了,它更复杂,它是之前的问题升级版,它包括我们封装的部分又包括之前其中一个问题的一部分,怎么办?再封装剩余的交集?
当这种情况发生到一定量级时单纯的这样处理很片面,我们无法直观的了解这些相似问题之间的关系,我们也无法主动的避免这些问题。那么问题的核心在哪里?我们在现实处理业务的场景时,往往也是一个需求刚开始很简单,再往后就会升级一次又一次变得越来越复杂,新的需求往往会在旧的功能上进行分支。这像什么?一个树形,这些需求为什么会在一棵树上?因为它们有很多共同点。而这个这些共同点都会指向上级直到树的根,而这个根就是我们的问题核心,就是我们要处理的“对象”。他在概念上是包含子节点的,而在实现上是被子节点包含的(概念上是所有节点的并集,实现上是所有节点的交集)。问题被剥离出来了就要解决,而我们这种针对这个对象来思考来解决问题从而达到解决与之相关的所有问题的思想就是面向对象的思想。而最佳实践-----本章不做讨论。
本章先开个头,讲的比较粗,若有不足请大家多多指点。
