人世繁华|进行面向对象程序设计深剖,可以一学,大牛带你深入Java核心技术( 四 )


对于规模较小的问题 , 使用过程化程序设计方法比较合适 。 但是 , 对于规模较大的问题 , 使用类和方法将会带来两点好处 。 一是类提供了一种便于将众多的方法聚集在一起的机制 。 要想实现一个简单的Web浏览器可能需要2000个过程 , 而可能只需要100个类 , 每个类平均20个方法 。 对于程序员来说 , 后者结构更易于驾驭 , 也更易于在开发团队中分配任务 。 二是类的封装机制将有助于对其他的类方法隐藏数据表示 。 如图4-2所示 , 这意味着如果出现了搞乱数据的bug , 就在访问这些数据的20个方法中检查错误 , 这样做总会比从2000个过程中查找错误要容易得多 。
将程序划分成模块 , 模块之间通过相互调用 , 而不是共享数据进行通信 。 这种做法(如果做得很好的话)也可以达到封装的目的 。 但是 , 在许多程序设计语言中 , 哪怕是编写程序中出现的很小失误也有可能导致对另一模块中的数据进行操作 , 这将很容易使得封装性遭到破坏 。
还有一个更严峻的问题 。 类可以拥有相同行为的多个对象 , 但我们却不能得到某个模块的多个拷贝 。 假定有一个模块封装了一组订单 , 以及一个能够快速访问的平衡二叉树模块 。 现在 , 有可能发现实际需要两个订单集合 , 一个用于表示未处理的订单 , 一个用于表示已处理的订单 。 我们无法让订单树模块实现两次链接 , 也不希望为链接操作建立一个副本 , 并为链接重新命名所有的过程 。 类没有这样的限制 。 一旦定义了类 , 就可以轻松地构造该类的任意多个实例(而模块只能有一个实例) 。
前面只浅显地介绍了一些概念 。 在本章最后 , 有一小节专门用于介绍“类设计技巧” 。 要想深入理解OO的设计思想 , 请参考相关的OO以及UML的书籍 。 这里向大家推荐GradyBooch、IvarJacobson和JamesRumbaugh编著的《TheUnifiedModelingLanguageUserGuide》(UML参考手册)(Addison-Wesley,1999)一书 。
觉得文章不错的话 , 可以转发此文关注小编 , 之后持续更新干货文章!!!希望能够帮助到大家学习 。


推荐阅读