对《Java编程思想》读者的一点建议

《Java 编程思想》这本书在豆瓣的评分高达 9.1 分,但我总觉得有点虚高。

记得刚上大学那会,就在某宝上买了一本影印版的《Java 编程思想》,但由于初学 Java,对编程极度缺乏信心,导致看这本书有一种看天书的感觉。后来,去苏州参加工作的时候把它作为最宝贵的纪念品带了过去。

2014 年回洛阳的时候把它送给了一位关系还不错的同事,权当是分别的礼物吧。2016 年的时候,我又重新买了一本,希望自己能够夯实一下基础。但事与愿违,它被我束之高阁了,读起来无比的枯燥。2018 年的时候,我重新捧起它读了一遍,总觉得有一种莫名的负罪感。

由此说明,《Java 编程思想》并不适合初学者(有一定编程经验最好)。如果适合初学者的话,我应该十年前就读完了(惭愧)。再者,《Java 编程思想》第四版足足 880 页,文字更是密密麻麻,这么大部头的一本书,令人望而生畏。

就我读过的感受来说,建议大家先粗读,读不懂的跳过去。然后再回头细致读一遍,每读一章,写一篇读后感,最好能动手实践一下书中的例子。

我对整本书的评分并不算高。但如果你觉得自己需要一些编程内功,这本书就不得不读了,它会消耗掉你无数的耐心,但这本身可能就是读书的一种必经之路。把心静下来,老老实实打好内功根基,过一段时间后,你就会发现自己和以往大有不同

原文链接:http://www.itwanger.com/java/2019/10/30/think-java-book-read-jianyi.html

下一篇:Java 的核心目的和并发编程

PS:微信搜索「沉默王二」公众号,关注后回复关键字「Java 编程思想」即可获取本书的电子版(高清带书签)。强烈大家购买纸质版,读起来不费眼。

  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
目 录 第1 章 模式的简史和形而上学........3 1.1 模式是什么...................................3 1.2 软件模式的简史...........................3 1.3 模式的起源...................................4 1.4 与道家思想的关系.......................5 1.5 软件的永恒之道...........................9 1.6 模式的要素...................................10 1.7 本书讲解模式的格式...................12 第2 章 统一建模语言UML 简介.....15 2.1 建造世界贸易中心.......................15 2.2 什么是UML.................................16 2.3 UML 包括什么.............................17 2.5 类图. 19 2.6 时序图...........................................27 2.7 状态图...........................................28 2.8 UML 及建模的工具.....................30 第3 章 软件的可维护性与可复用性35 3.1 软件系统的可维护性...................35 3.2 系统的可复用性...........................39 3.3 老子论“不武”...........................42 第4 章 “开-闭”原则(OCP).........45 4.1 什么是“开-闭”原则.................45 4.2 怎样做到“开-闭”原则.............45 4.3 与其他设计原则的关系...............47 4.4 策略模式对“开–闭”原则的支持 ........49 4.5 在其他设计模式中的体现...........50 4.6 一个重构做法的讨论...................54 第5 章 专题:Java 语言的接口........59 5.1 什么是接口...................................59 5.2 为什么使用接口...........................60 5.3 Java 接口常见的用法...................63 第6 章 专题:抽象类........................69 6.1 什么是抽象类...............................69 6.2 抽象类是用来继承.......................70 6.3 基于抽象类的模式和原则...........72 6.4 什么时候才应当使用继承复用...73 第7 章 里氏代换原则(LSP) .........79 7.1 美猴王的智慧...............................79 7.2 什么是里氏代换原则...................80 7.3 里氏代换原则在设计模式中的体现 ....... 82 7.4 墨子论“取譬”...........................83 7.5 从代码重构的角度理解...............84 第8 章 依赖倒转原则(DIP)..........95 8.1 为何而“倒转”...........................95 8.2 复用与可维护性的“倒转”.......96 8.3 依赖倒转原则...............................96 8.4 怎样做到依赖倒转原则...............99 8.5 Java 对抽象类型的支持...............101 8.6 一个例子:账号、账号的种类和账号 的状态...... 103 8.7 墨子论“取周”...........................106 8.8 依赖倒转原则的长处和短处.......107 第9 章 接口隔离原则(ISP) ..........109 9.1 什么是接口隔离原则...................109 9.2 一个角色隔离原则的例子...........110 9.3 定制服务的例子...........................112 第10 章 合成/聚合复用原则(CARP) ....... 115 10.1 合成和聚合的区别.....................115 10.2 复用的基本种类.........................115 10.3 从代码重构的角度理解.............117 第11 章 迪米特法则(LoD)...........121 11.1 迪米特法则的各种表述.............121 11.2 狭义的迪米特法则.....................121 《Java 与模式》作者阎宏博士 电子工业出版社出版 11.3 迪米特法则与设计模式.............126 11.4 广义的迪米特法则.....................128 11.5 广义迪米特法则在类的设计上的体 现....129 11.6 广义迪米特法则在代码层次上的实 现....133 11.7 老子论“圣人之治”.................133 第12 章 简单工厂(Simple Factory)模式 ........139 12.1 工厂模式的几种形态.................139 12.2 简单工厂模式的引进.................139 12.3 简单工厂模式的结构.................146 12.4 简单工厂模式的实现.................148 12.5 简单工厂模式与其他模式的关系 ........153 12.6 模式的优点和缺点.....................155 12.7 简单工厂模式在Java 中的应用156 12.8 女娲抟土造人.............................160 第13 章 工厂方法(Factory Method)模式 ........165 13.1 引言.............................................165 13.2 工厂方法模式的结构.................167 13.3 工厂方法模式在农场系统中的实现 ........172 13.4 关于工厂方法模式的实现.........177 13.5 Java 语言中工厂方法模式的例子 ........179 13.6 工厂方法模式与其他模式的关系 ........182 13.7 女娲举绳造人.............................185 13.8 其他的例子.................................185 第14 章 抽象工厂(Abstract Factory)模 式....193 14.1 引言.............................................193 14.2 问题.............................................195 14.3 抽象工厂模式的结构.................198 14.4 在什么情形下应当使用抽象工厂模 式....204 14.5 抽象工厂模式在农场系统中的实现 ....... 205 14.6 抽象工厂模式的另一个例子.....211 14.7 “开-闭”原则..............................212 14.8 关于模式的实现.........................213 14.9 女娲造万物的故事.....................214 第15 章 单例(Singleton)模式.......221 15.1 引言.............................................221 15.2 单例模式的结构.........................222 15.3 在什么情况下使用单例模式.....228 15.4 单例类的状态.............................229 15.5 一个实用的例子:属性管理器.230 15.6 Java 语言中的单例模式.............235 15.7 专题:不完全的单例类.............239 15.8 相关模式.....................................240 15.9 附录:双重检查成例的研究.....243 15.10 给读者一点建议...................247 第16 章 专题:单例模式与MX 记录 ....... 249 16.1 问题与解决方案.........................249 16.2 目录服务与MX 记录................251 16.3 JNDI 架构介绍...........................252 16.4 如何使用JNDI 编程..................253 16.5 系统设计.....................................255 16.6 讨论.............................................261 第17 章 专题:多例(Multiton)模式与多 语言支持.. 267 17.1 引言.............................................267 17.2 多例模式.....................................269 17.3 多语言项目的设计.....................272 第18 章 专题:序列键生成器与单例及多 例模式...... 283 18.1 问题.............................................283 18.2 将单例模式应用到系统设计中.285 18.3 将多例模式应用到系统设计中.297 18.4 讨论.............................................300 第19 章 建造(Builder)模式..........301 19.1 引言.............................................301
前 言可扩展标记语言(Extensible Markup Language, XML)作为一种计算技术出现不过是短短几年前的事情。它是一种概念,以其简便性而颇得人心,它驱动了Internet应用程序编写方式的动态改变。本书的覆盖范围本书解释和演示了设计、使用、显示XML文档所必需的技术。首先也是最重要的,本书覆盖了万维网协会(W3C)整理编撰的XML的全部基础内容。W3C是以正统方式发明XML的标准主体并在不断开发XML的规范。虽然有越来越多的XML社团在不断涌现并提出崭新的超出W3C控制之外的与XML相关的想法,但W3C对于XML的开发来说,仍然是非常重要并处于中心地位的。本书的焦点集中在如何使XML与现实生活中的应用结合在一起。它展示了很好的设计技术,演示了如何在支持XML的应用程序与Web应用程序和数据库系统之间提供接口。它研究了XML的尖端部分并预览了一些新兴技术。不管你的需要是针对数据交换还是显示样式化,本书都会覆盖XML领域的所有相关技术。本书中的每一章都包含一个实践范例。由于XML是一种独立于平台的技术,所有这些例子覆盖了各种语言、解析器和服务器。所有的技术都与所有的平台有着某种关系,所以即便它们不是在你最习惯的平台上实现的,你仍然可以从这些例子中得到许多有益的知识。本书读者本书适用于任何希望使用XML构建应用程序和系统的读者。Web站点的开发者能够学到把自己的站点提高一个层次的技术,而编程者和软件系统程序员能够学到XML如何和他们的系统相配合,以及如何使用它来解决应用程序集成中的问题。 XML应用程序天生就具备分布性而且通常是面向Web的。本书并不是一本专注于分布式系统或Web开发的著作,所以你不必深入了解这些领域的内容。大概了解Web中的多层结构和网络互联就已经足够了。本书中的样例使用了各种各样的编程语言和技术。XML之所以吸引人,很重要的一点就在于它是独立于平台和语言的。如果你做过一些Web开发,肯定会发现其中的某些例子你曾经用自己偏爱的语言编写过。如果你没有发现针对自己的平台的任何例子,也不要担心。用于XML的工具已经有了Perl、C++、JavaJavaScript和任何支持COM的语言版本。Microsoft Internet Explorer(主要是5.0或更新的版本)拥有很强的XML内置功能,而Mozilla浏览器也有类似的支持。XML工具还深入到了主要的关系型数据库管理系统,以及Web和应用程序服务器当中。如果本书没有涉及到你的平台,学习XML的基础并掌握例子中所包含的技术,就能够把学到的经验应用到任何普通的计算平台上。本书的组织结构本书的每一章都有一个关于XML的单独主题。第1章提供了XML主要特点的概念性介绍。第2章和第3章关系非常密切,因为它们都涉及XML的基础。第2章涉及XML的基本语法和规则。第3章提供了正式定义针对自己特定问题的XML词汇表的工具。但是,此后的章节因本身介绍的技术和技巧的不同相对非常独立。本书的主要章节是和一个统一的例子紧密相关的。这个例子假设一个出版商希望用XML表单显示自己的数据目录。开始时,我们设计出目录中书籍的描述规则,然后构建那些规则逐个演示每种技术是如何帮助我们构建XML应用程序的。你将看到书籍目录如何转变成文档,每个文档如何用代码操作和访问,它们的内容如何样式化以便于人们阅读。既然从实践来说,这类应用程序不可能凭空存在,所以我们将看到XML应用程序如何与数据库接口。这些是贯穿全书的、在此后的章节中将重点突出的几个主线。这使得你能够在通读全书时把注意力集中在那些对于你非常重要的问题上,而跳过其他章节。学习主线 XML是从一种简单的文档标记语言逐步发展成为涉及范围广泛的标记技术的。这种成长也正是XML应用程序的强大所在。但是,随着这种成长也出现了分歧。不同的读者可能会抱着不同的期待来阅读本书。XML对于不同的人来说是完全不同的事情。虽然我们希望大家能够逐章地阅读全书,但这并不是必须的。实际上,对于任何接触本书的人来说这都不是最好的方式。本书是由从一个核心辐射出去的三个主线组成的。读者当然可以从第1章开始,然后按顺序逐章阅读到最后一章,但读者也可以根据自己的需要找到一个更为直接的途径。每个人应该阅读本书的核心章节以理解XML包含的基本内容。以此作为开始,你可以从数据的角度或者从内容的可视化和样式化这个角度来了解XML。 1. 核心第2章(XML)和第3章(DTD)覆盖了XML 1.0的基础内容。第2章给了我们基本语法概念,第3章告诉我们如何以一种每个XML编程者都能够理解的方式正规地定义XML词汇表。这些章节提供了理解和使用XML所必需的最基本内容。第4章(关于数据建模)在创建良好的XML结构方面为读者提供了有效的指导和经验。从一个不佳的XML词汇表中恢复过来是非常困难的,而好的结构将免除许多编程错误。第5章向大家讲解了文档对象模型(DOM),W3C用于XML文档的API,以及其他诸多事物。这将引导大家走出文档的范畴进入应用程序的世界。这四章对于读者开始XML应用程序的编程来说已经足够了。当你读完它们之后,你将理解XML是什么,如何筹划它的结构,如何用代码操作XML文档。虽然XML技巧资源已经相当丰富,但你仍需要首先打好坚实的基础。所以关键的主线包括: ?第2章:格式正规的XML ?第3章:文档类型定义 ?第4章:数据建模 ?第5章:文档对象模型 2. 作为数据的XML 正如你在核心章节中看到的,XML和HTML不同,它清晰划分出文档内容和可视化显示两个部分。实际上,从许多应用程序的目的出发,XML文档的可视化显示并不重要。这些应用程序把XML看作是数据。它的意思就是把XML当作程序和系统之间的接口使用。这可能是现在XML最令人振奋的特征—特别是XML能够使电子商务成为从事商务交易处理的Web应用程序的一种技术。第6章将从这一线索开始。它讨论了一种用于操作XML文档的由事件驱动的API(被称作SAX)。这种API对于处理大容量的XML、XML流或者你在解析器中留下最少的痕迹的时候特别有用。第7章介绍了命名空间和模式,这两个领域使我们能够以比DTD更有效和更富有创造性的方式来表达概念。它们是XML中描述数据的核心。第8章向大家演示了如何链接文档和在文档中针对特定元素进行查询。在本书样例中使用的查询技术实际起源于XML的样式化,所以本章还承当了显示主线的双重重任。它在这条主线中对于展示查询如何快速找到所需元素,以及如何将不同XML文档关联起来非常有用。第9章(操作XML)也涵盖了出于各类目的转换XML文档的种种技术。从数据的角度讲这非常有趣,因为它展示了一些在词汇表之间转化的非常强大的技术。我们将证明,对于数据交换,特别是在电子商务和B2B的环境下,它是非常有用的。此外,本章也会涉及到显示主线,因为它介绍了将XML文档转换为其他语言的思想,这是有助于向用户显示XML内容的。第10章(XML和数据库)全是关于数据的。关系型数据库和XML是获取数据用于计算的两种途径,但是它们所扮演的角色不同。本章将教会大家如何在传统方法和数据存储之间提供接口以便于XML的使用。第11章(服务器到服务器)将介绍当我们无法从本地得到数据时如何到达另外一个服务器。这种新奇的技巧将变得越来越普通,因为Web应用程序正逐渐走向计算技术的前台。接下来,第12章会利用前两章的信息来讨论XML如何作为电子商务的信息媒介来使用。在这个例子中,另一台服务器属于一个商业合作伙伴。他们会根据具体情况利用XML解决数据交换的问题并说明具体细节。这条主线的一个题外话就是对无线应用协议(Wireless Application Protocol, WAP)的讨论,它与第14章中XML在无线标记语言(Wireless Markup Language, WAL)中的使用有着关系。WAP所关心的大部分内容是如何把XML的冗长形式变形为简练的二进制表示,在不失去以往优势的同时也适合移动设备使用。考虑这个问题并了解WAP的解决方案会使我们更加感叹XML作为数据交换介质的优势。此外,如果XML用来存储和传输数据,我们可能希望把自己数据放到所有的普通数据设备上,而越来越多的无线设备(例如蜂窝电话和专用Web设备)会成为我们的选择。所以XML作为数据的这条主线包括:第6章:SAX:XML的简单API 第7章:命名空间和模式第8章:链接和查询第9章:操作XML 第10章:XML和数据库第11章:服务器到服务器第12章:电子商务第14章:WAP和WML 3. XML的可视化显示 XML的数据处理对于在机器之间移动数据来说是再好不过了,但是如果你要把XML传递给人的话,就会对它的样式处理比较感兴趣。和大多数注重于数据的传统计算领域(例如关系型数据库)不同,XML的研究者们在如何显示数据方面花费的心思相当地少。XML的解决方案都是数据驱动型的。不管我们使用的是CSS还是XSL,我们将样式单中的数据应用到XML文档中的数据上,以产生适合人们阅读的可视化显示。第8章(链接和查询)将以此为线索开始。这是因为查询技术的一个子集允许编程者指定一个标准集,用来选择文档中必须样式化的部分。样式化要精确到能够指定如何根据特定元素所处位置的上下文关系来实现。相同类型的元素可能因为它们父元素的不同,或者周边显示的不同而以不同的面貌出现在大家面前。第9章将告诉编程者根据适当的环境,在需要时把XML转换成适合显示的某些其他格式的技术。这正是数据驱动的样式化的核心所在。第13章(样式化)在第8章和第9章的基础上告诉读者如何对XML样式化。我们的样式单将成为强大的规则集合,能够应用于XML文档的数据以产生可视化的显示。从一个数据集,你可以快速而有效地产生用于显示的多种视图。这就是把数据与显示实现分离开来的好处。第14章(WAP)也包含在显示主线当中,因为样式化对于小型设备来说是一种很重要的选择,而小型设备是无线通信的主要用户。它帮助设计者解决如何压缩可视化内容以适应非常小的显示区域。这就将数据副本的考虑和数据压缩结合在了一起,以适合低带宽的网络使用。因为我们的样式是由样式单驱动而不是嵌入在数据当中的,所以我们能够专门针对无线设备创建一种有效的显示格式。总而言之,我们的显示主线包括:第8章:链接和查询第9章:操作XML 第13章:样式化第14章:WAP 阅读本书前的准备本书假设你已经掌握了一些关于HTML、JavaScript、Java和ASP的知识。如果你不熟悉Java或ASP,它并不会妨碍你了解隐含在主题后面的概念,它们的影响会限制在一个较小的范围内。但是,为了能够使用本书中提到的所有样例,你必须得有一个浏览器,一个兼容ASP的Web服务器(例如Microsoft的Personal Web Server)并(作为运行Java程序的最小环境)安装Sun Java运行时环境(JRE)。 Personal Web Server(用于Windows 9x机器)可以作为NT4 Option Pack的一部分免费下载: http://www.microsoft.com/ntserver/nts/downloads/recommended/NT4OptPk/default.asp 在同样的地址你可以下载IIS for Windows NT 4。Windows 2000 Professional预装了支持ASP的Web服务器,但是你需要从定制安装中进行选择,而不能采用典型安装。 JRE能够从以下地址免费得到: http://www.java.sun.com/products/jdk/1.2/jre/index.html 本书涉及代码的全部内容都可以从http://www.wrox.com下载。约定为了帮助大家熟悉结构,理解全文,我们使用许多贯穿全书的约定。书中的程序带底纹的是一些新的、重要的,而不带底纹的是相对而言不太重要,或前面遇到过的。在正文当中,当我们介绍到重要词汇时,会突出显示。当我们介绍键盘组合时,会采用这种形式:Ctrl-A。保持联络如果大家能够对本书提出宝贵的意见和建议,我们将不胜感激。我们的电子邮件地址是: [email protected] 大家也可以通过反馈链接和我们联络: http://www.wrox.com 本书原书书号为ISBN 1-861003-11-0。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉默王二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值