《JAVA 编程思想》读后感 一、对象入门

现在回过头重新拜读java经典书籍之一《JAVA 编程思想》,有很大收获。经典的书籍就是这样,它总能给你每一次的阅读带来不同的体验。我第一次阅读这本书,还是大学刚开始学习编程的时候。当时就注意到有人提醒说,初学者不适合看这本编程思想。我偏不信。果然,看的似是而非。现在,经过这几年,在java上的实践。多少有了点经验。再看之前看不太懂的话,果然有了新的理解。
在这篇文章里,我们就从第一章,对象入门开始回顾吧。在这一章里,作者介绍了对象和java的关系。为什么要面向对象编程。我在另外一篇文章里曾提到,面向对象编程的难点在于抽象。这种语言要求使用者抽象出最好的对象。这是很难的。作者也说:

事实上,很难很好地设计出对象—— 从而很难设计好任何东西。因此,只有数量相当少的“专家”能设计出最好的对象,然后让其他人享用。

大部分程序员,如果面向对象编程,估计设计出来的对象经常是蹩脚的,没有通用性的。而且大部分编程时间,其实都是用现成的对象进行操作。即使这样,也经常用错。从这个方面看,面向对象比面向过程对于程序员更不友好。但是为什么说:

“为什么面向对象的编程会在软件开发领域造成如此震憾的影响?”

简单来说,更高层次的抽象带来的是更快更廉价的开发和维护。无论是对于管理,设计,开发来说,建模过程变得更加清晰。到了今天,比面向对象设计更进一步的方法已然出现,那就是面向领域设计。即DDD。它是比一般抽象更高级的抽象。难度也是陡增的。但是也由此可见,大家对于编程的思考都是一脉相承的。JAVA就是这样一门支持抽象出对象,面向对象编程的语言。或者正如作者所说:

所有编程语言的最终目的都是提供一种“抽象”方法。

从汇编到C再到JAVA,程序员所作的事情,其实都是致力于在机器空间和代码空间中架起桥梁。高层次的成功的抽象(像DDD),帮助我们更靠近问题空间。这也大大增加了解决问题的效率。现在我们一起看下面对纯粹的对象编程(OOP)语言有哪五大基本特征:

  1. 所有东西都是对象。
  2. 程序是一大堆对象的组合。
  3. 每个对象都有自己的存储空间,可容纳其他对象。
  4. 每个对象都有类型。
  5. 同一类对象都能使用相同的方法。做相同的操作。

其中从第五点延伸出的对象的能力,即接口。接口代表某类对象可以接受的信息并为之进行的操作。在对象和接口基础上,创建者和使用者,可以通过类的封装达成某种协调。即使用者不需要知道创建者在对象中的实现方案就能顺利使用对象。因此有了对于类的访问控制。关键字public,private,protect等就是为此而生。
当我们封装好了对象,其实也在一定程度上实现了对象的复用。作者说,

这种重复使用的能力并不容易实现;它要求较多的经验以及洞察力,这样才能设计出一个好的方案,才有可能重复使用。
许多人认为代码或设计方案的重复使用是面向对象的程序设计提供的最伟大的一种杠杆

好的OOP程序员,应该时刻向着对象的复用努力。如果不能发挥出这一特性,OOP的优势就丧失了一半。在这里,作者提醒我们,不能因为继承是面向对象的一大特性,就忽略组合对象。利于对象的复用和组合,可以做到解耦。从而使我们的设计变得清爽。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容