具体描述
《Java 设计模式》通过最新的Java特征和最佳实践阐释了经典著作《设计模式》中介绍的23种基本设计模式。作者根据自己丰富的编程经验,用实际的Java 5.0程序、清晰的UML图表以及引人入胜的实践讲述了每个模式。书中每章集中讨论一种特定的模式,之后给出一些自我突破题,自我突破题或者启发读者思考,或者要求编写代码来解决某个问题,有助于更深入地理解书中的概念。
《Java 设计模式》适合于各层次的Java开发人员阅读。
作者简介
目录信息
1.1 为什么使用模式 1
1.2 为什么使用设计模式 2
1.3 为什么使用Java 2
1.4 UML 3
1.5 自我突破 3
1.6 本书的组织方式 3
1.7 欢迎来到Oozinoz公司 4
1.8 小结 5
第一部分 接口型模式
第2章 接口型模式介绍 8
2.1 接口和抽象类 8
2.2 接口和责任 9
2.3 小结 10
2.4 超越普通接口 10
第3章 Adapter (适配器) 模式 11
3.1 接口适配 11
3.2 类和对象适配器 14
3.3 为JTable适配数据 16
3.4 标识适配器 20
3.5 小结 20
第4章 Facade (外观) 模式 21
4.1 外观类、工具类和示例类 21
4.2 重构为Facade模式 22
4.3 小结 29
第5章 Composite (组合) 模式 30
5.1 常见的组合 30
5.2 Composite模式的递归特性 31
5.3 组合、树和环 32
5.4 含有环的Composite模式 35
5.5 环的影响 38
5.6 小结 39
第6章 Bridge (桥接) 模式 40
6.1 经典范例:普通抽象 40
6.2 从抽象到Bridge模式 42
6.3 应用Bridge模式的驱动程序 43
6.4 数据库驱动程序 44
6.5 小结 45
第二部分 责任型模式
第7章 责任型模式介绍 48
7.1 常见的责任型模式 48
7.2 通过可见性属性控制责任 49
7.3 小结 50
7.4 超越普通责任型模式 50
第8章 Singleton (单例) 模式 51
8.1 Singleton模式机制 51
8.2 单例和线程 52
8.3 识别单例 53
8.4 小结 54
第9章 Observer (观察者) 模式 55
9.1 经典范例:GUI中的Observer模式 55
9.2 模型/视图/控制器 58
9.3 维护Observable类对象 62
9.4 小结 64
第10章 Mediator (中介者) 模式 65
10.1 经典范例:GUI的Mediator模式 65
10.2 利用Mediator模式管理关系完整性 68
10.3 小结 73
第11章 Proxy (代理) 模式 74
11.1 经典范例:图像代理 74
11.2 重新思考图像代理 78
11.3 远程代理 79
11.4 动态代理 84
11.5 小结 87
第12章 Chain of Responsibility (责任链) 模式 88
12.1 常见的责任链 88
12.2 重构为Chain of Responsibility模式 89
12.3 固定责任链 91
12.4 不带组合结构的Chain of Responsibility模式 92
12.5 小结 93
第13章 Flyweight (享元) 模式 94
13.1 不变性 94
13.2 提取享元中不可变的部分 95
13.3 共享享元 96
13.4 小结 99
第三部分 构造型模式
第14章 构造型模式介绍 102
14.1 普通构造的挑战 102
14.2 小结 103
14.3 超越普通构造 103
第15章 Builder (生成器) 模式 105
15.1 常见的生成器 105
15.2 根据约束构造对象 107
15.3 根据不完整信息构造符合约束的对象 109
15.4 小结 109
第16章 Factory Method (工厂方法) 模式 110
16.1 经典范例:迭代器 110
16.2 识别Factory Method模式 111
16.3 决定要实例化的对象 111
16.4 并行层次结构中的Factory Method模式 112
16.5 小结 114
第17章 Abstract Factory (抽象工厂) 模式 115
17.1 经典范例:GUI工具包 115
17.2 抽象工厂和工厂方法 118
17.3 包和抽象工厂 121
17.4 小结 122
第18章 Prototype (原型) 模式 123
18.1 作为工厂的原型 123
18.2 利用克隆进行原型化 124
18.3 小结 126
第19章 Memento (备忘录) 模式 127
19.1 经典范例:使用备忘录实现撤销操作 127
19.2 备忘录的持久性 132
19.3 跨越会话的持久性备忘录 132
19.4 小结 135
第四部分 操作型模式
第20章 操作型模式介绍 138
20.1 操作和方法 138
20.2 签名 139
20.3 异常 139
20.4 算法和多态性 140
20.5 小结 141
20.6 超越普通操作 141
第21章 Template Method (模板方法) 模式 142
21.1 经典范例:排序 142
21.2 完成算法 145
21.3 Template Method模式钩子 147
21.4 重构为Template Method模式 148
21.5 小结 149
第22章 State (状态) 模式 150
22.1 状态建模 150
22.2 重构为State模式 153
22.3 使状态成为常量 156
22.4 小结 157
第23章 Strategy (策略) 模式 158
23.1 策略建模 158
23.2 重构为Strategy模式 160
23.3 比较Strategy模式和State模式 163
23.4 比较Strategy模式和Template Method模式 164
23.5 小结 164
第24章 Command (命令) 模式 165
24.1 经典范例:菜单命令 165
24.2 使用Command模式提供服务 167
24.3 Command模式钩子 168
24.4 Command模式与其他模式的关系 169
24.5 小结 170
第25章 Interpreter (解释器) 模式 171
25.1 Interpreter模式范例 171
25.2 解释器、语言和解析器 180
25.3 小结 180
第五部分 扩展型模式
第26章 扩展型模式介绍 184
26.1 面向对象设计原则 184
26.2 Liskov替换原则 (LSP) 184
26.3 Demeter法则 185
26.4 消除代码坏味 186
26.5 超越普通的扩展 187
26.6 小结 187
第27章 Decorator (装饰器) 模式 188
27.1 经典范例:流和输出器 188
27.2 函数包装器 193
27.3 与其他模式相关的Decorator模式 199
27.4 小结 199
第28章 Iterator (迭代器) 模式 200
28.1 常规迭代 200
28.2 线程安全的迭代 201
28.3 对组合结构进行迭代 206
28.3.1 组合枚举器的深度 211
28.3.2 枚举叶节点 212
28.4 小结 213
第29章 Visitor (访问者) 模式 214
29.1 Visitor模式机制 214
29.2 常见的Visitor模式 216
29.3 Visitor模式循环 220
29.4 Visitor模式危机 223
29.5 小结 224
第六部分 附录
附录A 指南 226
A.1 从本书中学到更多 226
A.2 理解设计模式的典型范例 226
A.3 在实践中应用设计模式 227
A.4 不断地学习 228
附录B 参考答案 229
B.1 接口型模式介绍 (第2章) 229
B.2 Adapter (适配器) 模式 (第3章) 230
B.3 Fa?ade (外观) 模式 (第4章) 233
B.4 Composite (组合) 模式 (第5章) 235
B.5 Bridge (桥接) 模式 (第6章) 237
B.6 责任型模式介绍 (第7章) 239
B.7 Singleton (单例) 模式 (第8章) 240
B.8 Observer (观察者) 模式 (第9章) 241
B.9 Mediator (中介者) 模式 (第10章) 245
B.10 Proxy (代理) 模式 (第11章) 248
B.11 Chain of Responsibility (责任链) 模式 (第12章) 249
B.12 Flyweight (享元) 模式 (第13章) 252
B.13 构造型模式介绍 (第14章) 254
B.14 Builder (生成器) 模式 (第15章) 255
B.15 Factory Method (工厂方法) 模式(第16章) 257
B.16 Abstract Factory (抽象工厂) 模式 (第17章) 260
B.17 Prototype (原型) 模式 (第18章) 262
B.18 Memento (备忘录) 模式 (第19章) 264
B.19 操作模式介绍 (第20章) 266
B.20 Template Method (模板方法) 模式 (第21章) 267
B.21 State (状态) 模式 (第22章) 268
B.22 Strategy (策略) 模式 (第23章) 270
B.23 Command (命令) 模式 (第24章) 271
B.24 Interpreter (解释器) 模式 (第25章) 274
B.25 扩展型模式介绍 (第26章) 275
B.26 Decorator (装饰器) 模式 (第27章) 276
B.27 Iterator (迭代器) 模式 (第28章) 278
B.28 Visitor (访问者) 模式 (第29章) 279
附录C Oozinoz源代码 282
C.1 获取和使用源代码 282
C.2 构建Oozinoz源代码 282
C.3 使用JUnit测试代码 282
C.4 自己查找文件 283
C.5 小结 283
附录D UML概览 284
D.1 类 284
D.2 类间关系 285
D.3 接口 286
D.4 对象 287
D.5 状态 288
词汇表 289
参考文献 294
索引 296
设计模式列表 308
· · · · · · (收起)
读后感
一本灰常好的技术类的书哦,终于出中文版了,译者翻译的相当好,可见英语水平很好哦,使我受益匪浅,真的是一本值得阅读的好书,顶顶顶顶顶顶!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!力荐啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 非常好...
一本灰常好的技术类的书哦,终于出中文版了,译者翻译的相当好,可见英语水平很好哦,使我受益匪浅,真的是一本值得阅读的好书,顶顶顶顶顶顶!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!力荐啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 非常好...
应该说还是不错的。 书中对设计模式的把握还是不错的。 不过由于翻译的缘故,有些地方读起来比较费力。
好吧,哈哈,牛人的大作,译者不错,赞一个。评论还太短,豆瓣啊。。。。。。。。。 这个要写多长的评论才能发表啊。。。。。。。 我在敲一行字还是提示评论太短就不玩了哈,豆瓣这个交互不科学,不科学,不科学!!!!
看了很多英文版的设计模式,gof,headfirst等等,都翻译的比较生硬,无法做到信达雅,感觉这本翻译的还比较贴近汉语,适合中国的码农们阅读~ 我靠都说了这么多字了怎么还是字数不够,究竟要多少才能够啊,做的太不人性化了,这样会让很多用户觉得反感
用户评价
这本关于 **《Java设计模式》** 的书,我读起来感觉非常扎实,尤其是在理论的阐述上,作者的功力可见一斑。它不像市面上很多书籍那样,只是罗列设计模式的定义和代码示例,而是深入挖掘了每种模式背后的设计哲学和权衡取舍。比如说,在讲解工厂模式时,书中不仅展示了如何使用,更细致地分析了何时应该使用抽象工厂而不是简单工厂,以及这种选择对系统扩展性和维护性的长远影响。作者似乎非常注重“为什么”而不是仅仅“怎么做”。书中对 UML 类的图示运用得恰到好处,能够清晰地描绘出模式的内部结构和对象间的协作关系,这对于初学者理解复杂模式的静态结构非常有帮助。另外,书中对几种经典模式(如单例、观察者)的并发安全实现进行了深入的探讨,这在实际的企业级应用开发中是至关重要的考量点。阅读过程中,我能感受到作者试图建立一种思维框架,让读者不仅是学会“应用”模式,而是真正理解“设计”的艺术。
这本书的整体结构非常适合作为系统性学习的教材,特别是对于需要为团队建立编码规范的架构师而言。它不仅仅是关于“模式”本身,更是一本关于“软件质量”的讨论集。作者花费了大量篇幅阐述SOLID原则与设计模式之间的相互支撑关系,而不是将它们割裂开来。我尤其喜欢最后几章对“模式的演化与反模式”的探讨,这部分内容明显超越了一般设计模式书籍的范畴,触及到了软件架构生命周期管理的深层问题。书中对测试驱动开发(TDD)环境下如何选择和应用设计模式的见解,为我提供了新的思路,帮助我更好地理解如何编写易于测试的代码。总而言之,这是一本厚重、实在、且充满真知灼见的著作,它推动的不是简单的知识积累,而是思维模式的升级。
这本书的排版和语言风格,我个人感觉非常“老派”但又极其可靠。它不像新潮的技术书籍那样追求轻量化和碎片化阅读,而是倾向于提供一个全面而体系化的知识体系。我特别欣赏作者在介绍每种模式时,都会先从它试图解决的“问题域”入手,这种“问题导向”的教学方法,极大地帮助我将书本知识与日常开发中的痛点联系起来。例如,在讲到桥接模式时,作者用了很长的篇幅描述了传统分层耦合的困境,仿佛在重现一个历史性的设计难题,这使得最终引入桥接模式时的顿悟感非常强烈。虽然有些章节的理论深度稍微有些晦涩,需要反复阅读才能完全消化,但总体而言,它为构建健壮、可维护的软件架构提供了坚实的理论基石,是一本值得放在手边随时翻阅的参考书。
坦白说,这本书的阅读体验,就像是跟随一位经验丰富的老工程师进行了一次深度的代码考古之旅。它更偏向于一种实践指导手册,而不是纯粹的学术著作。书中大量的真实项目案例和“陷阱”分析,让我受益匪浅。比如,在讨论装饰器模式时,作者没有停留在教科书上的例子,而是详细拆解了一个在线交易系统中如何使用装饰器动态地为订单添加各种费用和折扣规则的场景,每一个步骤都配有清晰的上下文解释。最让我印象深刻的是,书中对于几种看似相似的模式(例如策略模式和模板方法模式)的区分点,讲解得极为犀利到位,指出了开发者在实际编码时最容易混淆的地方。整本书的行文风格偏向于技术报告,逻辑严密,论证充分,读起来需要一定的专注度,但回报是巨大的——它有效提升了我重构旧代码时的信心和准确性。
我对这本书的评价是,它提供了一种近乎“冷峻”的视角来看待设计模式的应用。作者似乎在刻意避免过度美化设计模式,而是直接将模式的局限性、引入的额外复杂度摆在了台面上。这种诚实的态度,让我对过度设计有了更深刻的理解。例如,书中对外观模式和门面模式的对比分析,不仅仅是区分了它们的意图,更是在讨论在微服务架构下,如何平衡封装的便利性与引入过多抽象层的风险。书中的代码示例代码量适中,干净利落,完全聚焦于模式本身,没有被多余的业务逻辑所干扰。对于那些已经掌握了基本语法,但苦于无法将模式自然融入到大规模项目中的中级开发者来说,这本书提供了一剂清醒剂,教会我们何时应该“克制”使用那些听起来很酷的设计模式。
这就是三个人翻译地啊...
从来没有看过翻译得这么烂的书
很棒的书籍,既能学习java知识,也能学习设计模式,对UML图也能够了解一些。
感觉书中的例子距离现实太远了,不是很好读
翻的有点烂……