一门面向对象编程语言能够让程序员构造可复用的程序组件。其它程序员通过使用这些组件,能够快速地搭建新的大型程序和框架。在理想的状态下,程序员不需要修改任何已经存在的代码,只需要将它们简单地组装在一起然后添加一些新的代码即可。当然这些可复用的组件并不是天上掉下来的馅饼,它是有代价的。它需要一门经过良好设计的面向对象编程语言和严格的编程规范。
Java 就是一门这样的语言。这本书会介绍它的面向对象元素:类、属性、方法、继承和接口。这些核心元素都有着简单的语法模型,能够帮助程序员表达它们。并且,Java 还实现了内存自动管理,这更是让程序员们从思考机器的实现细节中解放出来,从而能够更专注于程序设计。
这本书的另外一个目的是向读者介绍 设计模式 。设计模式是能够加强代码复用的编程规范的关键所在。设计模式能够帮助程序员很好地组织面向对象组件,这样程序员就能够按照自己所希望的那样,实现整个计算流程了。更重要的是,设计模式有助于沟通程序组件的重要属性(这句不知道怎么意译,只能直译)。如果一个组件按照精确的公式化的模式实践(它的文档也一样),那么其他程序员就能够很容易地理解它的结构并且在自己的程序进行复用,甚至不需要了解该组件的源代码。
本书适用的读者
这本书主要的受众是那些愿意学习面向对象的本质以及设计模式的人,尤其是程序员、设计师和学生等等。读者需要有一些基本的编程经验。如果读者理解函数式编程的基本原理,那么他们将会从本书获得最大收益。了解函数式设计的最好办法是学一门使用 Scheme(或者 ML)语言进行教学的入门级计算机科学课程,但这并不是必需的。
本书未涉及的方面
Java 在它的面向对象核心之上,提供了很多有用的特性及库。当然,这些额外的 Java 元素对于专业编程来说很重要,但对于本书的重要目标:
面向对象编程及设计模式的使用
来说却没有什么关系。正因为这个原因,本书不是一本完全的 Java 入门书籍。不过,掌握了本书内容的读者在学习了本书 Commencement 章节补充那些书以后,会很快成长为一名专业的 Java 程序员。
有关设计模式的书籍发展得非常快。所以对一本入门级的书来说,能够清楚涉及到的设计模式不是很多。但是我们用到的模式的简洁以及强大功能会鼓舞读者继续学习书后所提及的额外的有关设计模式的资料。
感谢
基本是感谢一堆人,以及每个人对本书做了哪些贡献,暂不翻译。
本书阅读指南
不要简单粗暴地过一遍本书。至少用心地读上 7 次。在读书时记得做标记或者写笔记,在本书的犄角旮旯会有诸多有用的提示。完整得过完每一个例子,而不是简单拿眼睛浏览一下。牢记一句箴言:先动脑,再动手。
本书形式是有关有趣的 Java 编程的对话。在你理解了书中的例子之后就动手实践它们,通过修改这些程序和例子来看看它们倒底是如何工作的。目前不幸的是大部分的 Java 实现都没有交互式命令行或者解释器。这就需要你这边做一些必要的重复性工作。接下来的章节会告诉你一些如何体验 Java 的提示。
我们不会在本书里对设计模式给出任何正式的定义。我们相信读者你有这个能力能够给出你自己对设计模式的定义,这样你才能更好地理解并掌握它们,而不是通过我们直接灌输给你。但是你要确认你自己知道并理解了在本书大部分章节里给出的部分建议。
我们在书中使用一些 标记规定 来在不同层次帮助你理解程序。主要的规定就是通过字体来标识不同类型的单词。(该段下面基本就是告诉你各种类型的单词使用什么字体,这个也不翻译了,到时候一看例子就知道了)。
本书的例子中出现食物名有两个原因。首先,食物比起那些抽象的概念来说更容易可视化(但是你饿的时候读本书就不是一个好主意了)。我们希望我们选择食物名能够有助读者理解本书中的例子和主题。其次,我们希望在读书时能够小分一下心。我们知道当你试图理解这些主题时多少有点沮丧,但是一丢丢分心多少能够帮助你远离沮丧的情绪。
你要准备开始阅读本书喽。祝你好运!我们希望你能够享受阅读本书。