5本最佳的Java面向对象理论和设计模式的书籍(转)

本文由 ImportNew - 唐小娟 翻译自 Javarevisited。欢迎加入Java小组。转载请参见文章末尾的要求。

对于Java程序员来说,掌握面向对象的设计理论和一些设计模式是必备技能。就像我在另一篇博客Java程序员应该知道的10个面向对象理论中 提到的,不学理论就开始编程,就类似于学习一种语言而不学习字母表。市面上有很多有关面向对象理论的、设计模式的和最佳实践的,但只有很少的书真正值得我 们阅读。这里涉及两件事情,一个是面向对象理论,一个是设计模式。前者是基础,后者是在基于基础的最佳实践。我们应该先学习面向对象理论,再学习设计模 式,来看看这些理论是如何帮助我们解决日常碰到的问题的。我为大家选择了以下的五本书,帮助大家学习面向对象理论和设计模式。这些书从浅到深。J2EE的 设计模式和核心Java设计模式有一点点区别,但对Java程序员来说,核心的J2EE设计书籍也是学习的一个不错的选择。

有关Java设计模式的最好的五本书

以下是我学习面向对象和设计模式的书籍清单。设计模式是前人在解决某些相似问题时总结出的最佳实践。下面的五本书也适用于其他的面向对象语言。如果你知道其他优秀的设计模式的书籍,请推荐给我们。

1. Head First Design Patterns by Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra, Elisabeth Robson

                    Head First Design PatternsHead First Design Patterns

这是我读到的第一本Head First系列的书,也是第一本面向对象的书,在此之前,我不知道如何使用抽象类和接口,我也不知道为什么组合比接口要好。在最初的几年开发中,我往往根据需求来编写代码,然而在更多的改动,更多的测试之后,往往引入更多的bug。多亏了我的好学精神,我了发现Head First Design Pattern。 读了第一节之后,我感到非常的愉悦。可以说这本书很基础,但是其实学习基础比学习高级的东西更难。这本书真正做到了教会我们基础。它是每一个Java程序 员必读的设计模式书籍,包括经验丰富的资深程序员。我也建议学习设计模式就应该从这本书开始。它不仅用清晰的方法解释了概念,还给出了很多图表,练习,测 试以及活生生的例子来帮助你思考和吸收。我是head first系列书籍的超级粉丝,就是因为Head First JavaHead First Design Pattern。Head First Design Pattern中有很多很棒的例子,任何想要学习面向对象基础的人(譬如接口,封装,多态,抽象等)都应该读读这本书。其中装饰模式(Decorator design pattern)和观察者模式(Observer design pattern)是非常好的两个章节。

2. Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides     

                    Design Patterns: Elements of Reusable Object-Oriented SoftwareDesign Patterns: Elements of Reusable Object-Oriented Software

这是四人帮(GOF)的经典设计模式的书籍, 它也是很多其他的面向对象设计模式书籍所借鉴的对象。如果关于设计模式的必读清单上没有这本书,那便是不完整的。出版了接近20年之后,这本书的主题依然 紧贴面向对象和设计模式理论。这本书围绕着设计一个文档编辑器的例子,分别解释了多种设计模式,如Creational patterns, Structural and Behavioral patterns。个人浅见,这本书是最好的设计模式书籍。对于每个Java程序员来说,这本书以及Java concurrency in PracticeEffective Java都是必读书籍。你可以从亚马逊上购买这本书,有纸质版的,也有多媒体CD。

3. Design Patterns Explained: A New Perspective on Object-Oriented Design (2nd Edition) by Alan Shalloway, James R. Trott

  Design Patterns Explained: A New Perspective on Object-Oriented Design (2nd Edition)

就像多线程和并发一样,设计模式也不容易理解。其中最困难的部分就是理解之后应用到真实的例子中去。这就是为什么要多读几本Java的设计模式的 书,非常值得这么做。因为对于某些程序员来说,某个作者的写作风格比其他作者更易读。但是Joshua Bloch是个例外,他的写作风格被部分程序员都适用。《Design Patterns Explained: A New Perspective on Object-Oriented Design》这本书是学习面相对象设计模式的另一本书。虽然它也没有什么新内容,也介绍了面向对象理论,UML以及装饰者模式、工厂模式、观察者模式等设计模式。但是它对于很多初学者来说更通俗易懂。这本书里的例子也非常棒。

4. Software Architecture Design Patterns in Java by Partha Kuchana

                    Software Architecture Design Patterns in JavaSoftware Architecture Design Patterns in Java

这是这个主题的又一本书,它不仅涵盖了所有的面向对象基础(类,对象,继承,多态,抽象,封装),也包括了一些实用但不明显的细节,譬如私有方 法,getter和setter方法,不可变对象,接口和监视器(monitor)。这本书还有一些更深入的面向对象的知识,如创建模式 (Creational patterns), 集合模式(Collection patterns), 结构模式(Structural patterns), 行为模式(Behavioral patterns),和并发(Concurrency patterns)。对于工厂模式和单例模式的讲述也很有趣。我喜欢这本书的另一个原因在于,有很多实用的问题和UML图表,这样不仅能更深入的理解问 题,也可以在实际应用方面有所帮助,实用也正是学习设计模式最重要的作用。最后这本书通过为网络主机公司设计软件的实例学习,来让我们将设计模式应用在真 实的场景中。简而言之,《Software Architecture Design Patterns in Java》可以帮助你全面学习设计模式。

5. Core J2EE Patterns: Best Practices and Design Strategies (2nd Edition) by Deepak Alur, Dan Malks, and John Crupi

                    Core J2EE PatternsCore J2EE Patterns

J2EE平台是Java程序语言的最流行的开发方法,它主要专注于解决网络和企业的问题,有一套自己的问题和需求。核心的J2EE模式描述了一些最 有用的J2EE世界的设计模式,譬如拦截过滤器(Intercepting Filters),前端控制器(Front Controller),MVC模式,数据访问对象模式(Data Access Object, DAO Pattern),视图协助器模式(View Helper Pattern)或视图解析器(View Resolver Pattern),服务定位模式(Service Locator Pattern)等。这本书将设计模式按照功能分类,分为表示层的设计模式、逻辑层的设计模式等。对于每一个需要编写网络应用和企业应用的Java和 J2EE程序员来说,这都是一本必读书籍。虽然现代的框架如Spring已经确保你在框架的层次接触到这些J2EE设计模式,譬如Spring MVC确保了MVC的使用,它也同时使用了前端控制器(DipatcherServlet)和视图解析器(ViewResolver)。同时Spring 框架还在容器层保证使用依赖注入和IOC。总之,不管你使用Spring MVC, Structs还是其他web框架,学习J2EE模式不仅能帮助你理解前人写的代码,也能让你写出更容易维护的代码。

除了以上的五本书,你可以看看Joshua Bloch的Effective Java第二版以及Head first object oriented analysis and design,你能知道更多面相对象的理论以及如何应用在Java编程中。Effective Java是Java程序员必读书籍,因为它解释了很多Java库如何设计的原理。


原文链接: Javarevisited 翻译: ImportNew.com - 唐小娟
译文链接: http://www.importnew.com/6374.html
[ 转载请保留原文出处、译者和译文链接。]

转载于:https://www.cnblogs.com/iMirror/p/3741411.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
  本书是一部独具特色的面向对象技术著作。书中结合代码示例生动透彻地讲述了面向对象思想的精髓,让读者真正学会以对象方式进行思考。此外,本书还讨论了各种与面向对象概念密切相关的应用主题,包括XML、UML建模语言、持久存储、分布式计算和客户/服务器技术等。   本书内容精炼,示例简单明了,适合各层次面向对象开发人员阅读,也是高校相关专业面向对象课程的理想教学参考书。 第1章 面向对象概念介绍 1 1.1 过程式程序设计与OO程序设计 2 1.2 从过程式开发面向对象开发 4 1.2.1 过程式程序设计 5 1.2.2 OO程序设计 5 1.3 对象到底是什么 5 1.3.1 对象数据 5 1.3.2 对象行为 6 1.4 类到底是什么 9 1.4.1 类是对象模板 9 1.4.2 属性 11 1.4.3 方法 11 1.4.4 消息 11 1.5 使用UML完成类图建模 12 1.6 封装和数据隐藏 12 1.6.1 接口 12 1.6.2 实现 13 1.6.3 接口/实现范型的一个实际例子 13 1.6.4 接口/实现范型的模型 14 1.7 继承 15 1.7.1 超类和子类 16 1.7.2 抽象 16 1.7.3 is-a关系 17 1.8 多态 18 1.9 组合 20 1.9.1 抽象 21 1.9.2 has-a关系 21 1.10 小结 21 1.11 本章使用的示例代码 21 1.11.1 TestPerson示例:C#.NET 21 1.11.2 TestPerson示例:VB.NET 22 1.11.3 TestShape示例:C#.NET 23 1.11.4 TestShape示例:VB.NET 25 第2章 如何以对象方式思考 27 2.1 了解接口与实现之间的区别 28 2.1.1 接口 29 2.1.2 实现 29 2.1.3 接口/实现示例 29 2.2 设计接口时使用抽象思维 33 2.3 尽可能为用户提供最小接口 35 2.3.1 确定用户 35 2.3.2 对象行为 36 2.3.3 环境约束 36 2.3.4 明确公共接口 36 2.3.5 明确实现 37 2.4 小结 37 2.5 参考书目 38 第3章 高级面向对象概念 39 3.1 构造函数 39 3.1.1 何时调用构造函数 39 3.1.2 构造函数中有什么 40 3.1.3 默认构造函数 40 3.1.4 使用多个构造函数 41 3.1.5 构造函数的设计 44 3.2 错误处理 44 3.2.1 忽略问题 45 3.2.2 检查问题并中止应用 45 3.2.3 检查问题并尝试恢复 45 3.2.4 抛出异常 45 3.3 作用域概念 47 3.3.1 局部属性 48 3.3.2 对象属性 49 3.3.3 类属性 50 3.4 操作符重载 51 3.5 多重继承 52 3.6 对象操作 53 3.7 小结 54 3.8 参考书目 54 3.9 本章使用的示例代码 54 3.9.1 TestNumber示例:C#.NET 54 3.9.2 TestNumber示例:VB.NET 55 第4章 类剖析 57 4.1 类名 57 4.2 注释 58 4.3 属性 59 4.4 构造函数 60 4.5 访问方法 62 4.6 公共接口方法 63 4.7 私有实现方法 64 4.8 小结 64 4.9 参考书目 64 4.10 本章使用的示例代码 65 4.10.1 TestCab示例:C#.NET 65 4.10.2 TestCab示例:VB.NET 66 第5章 类设计指导原则 68 5.1 真实世界系统建模 68 5.2 明确公共接口 69 5.2.1 最小公共接口 69 5.2.2 隐藏实现 69 5.3 设计健壮的构造函数(和析构函数) 70 5.4 在类中设计错误处理 70 5.4.1 对类建立文档以及使用注释 71 5.4.2 构建类要以合作为出发点 71 5.5 设计时充分考虑重用 72 5.6 设计时充分考虑到可扩展性 72 5.6.1 名字要有描述性 72 5.6.2 抽出不可移植的代码 72 5.6.3 提供一种复制和比较对象的方法 73 5.6.4 让作用域尽可能小 73 5.6.5 类应当对自己负责 74 5.7 设计时充分考虑可维护性 75 5.7.1 使用迭代 76 5.7.2 测试接口 76 5.8 使用对象持久性 78 5.9 小结 79 5.10 参考书目 79 5.11 本章使用的示例代码 79 5.11.1 TestMath示例:C#.NET 79 5.11.2 TestMath示例:VB.NET 80 第6章 利用对象实现设计 81 6.1 设计指导原则 81 6.1.1 完成适当的分析 84 6.1.2 建立工作陈述 84 6.1.3 收集需求 84 6.1.4 开发用户界面的原型 85 6.1.5 明确类 85 6.1.6 确定各个类的职责 85 6.1.7 确定类如何相互合作 85 6.1.8 创建类模型来描述系统 85 6.2 案例研究:blackjack示例 86 6.2.1 使用CRC卡 87 6.2.2 明确blackjack类 88 6.2.3 明确类的职责 90 6.2.4 UML用例:明确协作关系 95 6.2.5 第一轮CRC卡 98 6.2.6 UML类图:对象模型 99 6.2.7 建立用户界面原型 100 6.3 小结 101 6.4 参考书目 101 第7章 掌握继承和组合 102 7.1 重用对象 102 7.2 继承 103 7.2.1 一般化和特殊化 105 7.2.2 设计决策 105 7.3 组合 107 7.4 为什么封装在OO中如此重要 109 7.4.1 继承如何削弱封装 109 7.4.2 多态的一个详细例子 111 7.4.3 对象职责 111 7.5 小结 115 7.6 参考书目 115 7.7 本章使用的示例代码 115 7.7.1 TestShape示例:C#.NET 115 7.7.2 TestShape示例:VB.NET 117 第8章 框架与重用:使用接口和抽象类实现设计 119 8.1 代码:重用还是不重用 119 8.2 什么是框架 119 8.3 什么是契约 121 8.3.1 抽象类 122 8.3.2 接口 124 8.3.3 集成 125 8.3.4 编译器的证明 127 8.3.5 建立契约 128 8.3.6 系统插入点 130 8.4 一个电子商务例子 130 8.4.1 电子商务问题 130 8.4.2 非重用的方法 131 8.4.3 一个电子商务解决方案 133 8.4.4 UML对象模型 133 8.5 小结 137 8.6 参考书目 137 8.7 本章使用的示例代码 138 8.7.1 TestShape示例:C#.NET 138 8.7.2 TestShape示例:VB.NET 140 第9章 构建对象 143 9.1 组合关系 143 9.2 分阶段构建 144 9.3 不同类型的组合 146 9.3.1 聚集 146 9.3.2 关联 146 9.3.3 结合使用关联和聚集 148 9.4 避免依赖性 148 9.5 基数 149 9.5.1 多个对象关联 151 9.5.2 可选关联 151 9.6 集成示例 152 9.7 小结 152 9.8 参考书目 153 第10章 用UML创建对象模型 154 10.1 什么是UML 154 10.2 类图的结构 155 10.3 属性和方法 156 10.3.1 属性 156 10.3.2 方法 157 10.4 访问指示 157 10.5 继承 158 10.6 接口 159 10.7 组合 160 10.7.1 聚集 160 10.7.2 关联 161 10.8 基数 161 10.9 小结 162 10.10 参考书目 163 第11章 对象和可移植数据:XML 164 11.1 可移植数据 164 11.2 XML 165 11.3 XML与HTML 166 11.4 XML和面向对象语言 166 11.5 两个公司间共享数据 167 11.6 用DTD验证文档 168 11.7 将DTD集成到XML文档 170 11.8 使用层叠样式表 175 11.9 小结 177 11.10 参考书目 177 第12章 持久对象:串行化和关系数据库 178 12.1 持久对象基础 178 12.2 将对象保存到平面文件 179 12.2.1 串行化文件 180 12.2.2 再谈实现和接口 182 12.2.3 方法如何保存 183 12.3 串行化过程中使用XML 183 12.4 写到关系数据库 186 12.5 加载驱动程序 189 12.5.1 建立连接 189 12.5.2 SQL语句 190 12.6 小结 192 12.7 参考书目 192 12.8 本章使用的示例代码 192 12.8.1 Person类示例:C#.NET 193 12.8.2 Person类示例:VB.NET 195 第13章 对象与因特网 197 13.1 分布式计算的演进 197 13.2 基于对象的脚本语言 197 13.3 JavaScript验证示例 200 13.4 Web页面中的对象 202 13.4.1 JavaScript对象 202 13.4.2 Web页面控件 204 13.4.3 声音播放器 205 13.4.4 电影播放器 205 13.4.5 Flash 206 13.5 分布式对象和企业 206 13.5.1 公共对象请求代理体系结构(CORBA) 207 13.5.2 Web服务定义 210 13.5.3 Web服务代码 213 13.5.4 Invoice.cs 214 13.5.5 Invoice.vb 215 13.6 小结 216 13.7 参考书目 216 第14章 对象和客户/服务器应用 217 14.1 客户/服务器方法 217 14.2 专有方法 217 14.2.1 串行化对象代码 218 14.2.2 客户代码 218 14.2.3 服务器代码 220 14.2.4 运行专有的客户/服务器示例 222 14.3 非专有方法 223 14.3.1 对象定义代码 223 14.3.2 客户代码 224 14.3.3 服务器代码 225 14.3.4 运行非专有的客户/服务器示例 227 14.4 小结 228 14.5 参考书目 228 14.6 本章使用的示例代码 228 14.6.1 客户/服务器示例——VB.NET:对象定义代码 228 14.6.2 客户/服务器示例——VB.NET:客户代码 229 14.6.3 客户/服务器示例——VB.NET:服务器代码 230 第15章 设计模式 232 15.1 为什么研究设计模式 232 15.2 Smalltalk的模型/视图/控制器 233 15.3 设计模式的不同类型 234 15.3.1 创建型模式 235 15.3.2 结构型模式 239 15.3.3 行为型模式 241 15.4 反模式 242 15.5 小结 243 15.6 参考书目 243 15.7 本章使用的示例代码 243 15.7.1 C#.NET 244 15.7.2 VB.NET 247 索引 250

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值