标签
内容简介
本书(英文原书 Design Patterns in Java,第2版)是经典 GoF《设计模式》一书的实践配套读物。作者不满足于逐条复述 23 种模式的意图与结构,而是以 Java 语言为载体,通过一个有完整业务背景的示例项目 Oozinoz(模拟一家生产烟花爆竹的工厂系统),把每一个模式放到真实的建模、编码与重构情境中加以演示,读者能清楚地看到一个设计从“能跑”走向“可改、可扩展”的过程。 全书把 23 种模式重新划分为接口型、职责型、构造型、操作型、扩展型五个部分,每一部分前都有导引章节,先讲清这一类模式共同面对的问题:接口与抽象类如何取舍、职责如何分配与可见性如何控制、构造函数之外的构造手段、操作与算法的多态化、以及以开闭原则、Liskov 替换原则、迪米特法则为线索的代码“坏味道”消除。这种分类方式与 GoF 的创建型、结构型、行为型三分法不同,更贴近“遇到什么问题该找哪一类模式”的实际思考路径。 每个模式章节都配有 UML 类图与可直接运行的 Java 代码,并附有若干练习题,引导读者在动手改写中体会模式的适用边界与代价。书末四个附录分别给出练习指南、全部练习参考答案、Oozinoz 源代码说明和 UML 速览,读者可以自行对照验证。本版为该书简体中文版的第 2 版,由张逸、史磊翻译。
编辑推荐
市面上的设计模式书大致分两类:一类讲“模式是什么”,一类讲“模式怎么用”。这本书属于后者,而且属于很少见的那种——它不把 23 个模式当成 23 个知识点罗列,而是当成 23 把手术刀,让你在具体的代码病灶上反复练手。 最值得称道的是它的分类方式。作者打散 GoF 的创建型/结构型/行为型三分法,改按接口、职责、构造、操作、扩展五类重组,每一类前面先有一章导引,把这一类模式共同面对的困境讲透。这个顺序其实更接近工程师的真实处境:你很少会先想到“我要用一个结构型模式”,更多是“这个接口被我改得越来越乱”或者“这个类的构造参数已经十几个了”。 Oozinoz 这个贯穿全书的虚构工厂项目也选得聪明。它足够真实——有订单、有机器、有可视化界面、有数据库驱动、有解释器要解析的表达式语法,却不至于复杂到淹没模式本身。UML 图配 Java 代码,再配练习题和完整答案,是一本可以真正“做”完的书。 需要提醒的是,代码停留在 Java 5 前后的语境,注解、函数式接口、Stream 这些后来的东西不在此书讨论范围内。但对于想真正把模式内化成直觉的人,这反而是优点:它逼你回到对象、接口、多态这些本质问题上去思考,而不是用一行 lambda 遮住设计问题。
适合谁读
适合
- 已经能写 Java 代码、但设计上常常“写完就改不动”的中级开发者
- 读过 GoF《设计模式》却不知道如何在项目中落地的读者
- 准备重构遗留代码、需要一套判断标准的工程师
- 讲授面向对象分析与设计、软件体系结构课程的教师与高年级学生
不适合
- 完全没有 Java 与面向对象基础的初学者,本书不讲解语法与基本概念
- 只想查阅模式定义速查表的读者,本书以练习驱动的讲解为主
- 主要使用函数式风格或非面向对象语言的开发者,收获会相对有限
阅读建议
- 强烈建议先动手做每章练习再看附录 B 的答案,只读不做会损失本书大半价值。
- 配合原书 Oozinoz 源码边读边改,把示例代码跑起来再尝试重构。
- 按五个部分的顺序读,每部分导引章不要跳过,它决定了你理解模式的框架。
- 读完一种模式后,回到自己的项目寻找一处可以应用或反证它的代码。
出版社简介
电子工业出版社
中国 · 成立于 1982 年
电子工业出版社是一家以电子信息及相关领域为出版特色的综合性出版社。从库内三千余种图书来看,其出版方向覆盖编程设计、人工智能、计算机综合、财经、摄影与社科等门类,既关注技术前沿,也兼顾大众阅读。代表图书包括《因子投资:方法与实践》《x86汇编语言:从实模式到保护模式》《RISC-V开放架构设计之道》《人工智能:语音识别理解与实践》《相控阵雷达技术》《雷达目标特性》及《100个Go语言典型错误》等,多围绕技术方法与工程实践展开。作者资源方面,有石川、李忠、王晓波、大卫·帕特森、安德鲁·沃特曼、余子濠等中外作者。受公开资料所限,暂不展开更多出版特色。
目录
- 第1章 绪论
- 第1部分 接口型模式
- 第2章 接口型模式介绍
- 第3章 适配器(Adapter)模式
- 第4章 外观(Facade)模式
- 第5章 合成(Composite)模式
- 第6章 桥接(Bridge)模式
- 第2部分 职责型模式
- 第7章 职责型模式介绍
- 第8章 单例(Singleton)模式
- 第9章 观察者(Observer)模式
- 第10章 调停者(Mediator)模式
- 第11章 代理(Proxy)模式
- 第12章 职责链(Chain of Responsibility)模式
- 第13章 享元(Flyweight)模式
- 第3部分 构造型模式
- 第14章 构造型模式介绍
- 第15章 构建者(Builder)模式
- 第16章 工厂方法(Factory Method)模式
- 第17章 抽象工厂(Abstract Factory)模式
- 第18章 原型(Prototype)模式
- 第19章 备忘录(Memento)模式
- 第4部分 操作型模式
- 第20章 操作型模式介绍
- 第21章 模板方法(Template Method)模式
- 第22章 状态(State)模式
- 第23章 策略(Strategy)模式
- 第24章 命令(Command)模式
- 第25章 解释器(Interpreter)模式
- 第5部分 扩展型模式
- 第26章 扩展型模式介绍
- 第27章 装饰器(Decorator)模式
- 第28章 迭代器(Iterator)模式
- 第29章 访问者(Visitor)模式
- 附录A 指南
- 附录B 答案
- 附录C Oozinoz源代码
- 附录D UML概览
- 参考文献
常见问题
这本书和 GoF 的《设计模式》是什么关系?
它不是 GoF 原书的替代品,而是配套的实践手册。GoF 讲清 23 种模式的意图、结构与协作关系;本书则用 Java 项目把这些模式放进真实的设计与重构情境中演练,适合在读过或正在读 GoF 时同步使用。
书中的代码是什么 Java 版本?现在读会过时吗?
示例基于 Java 5 前后的语言特性,未涉及注解、lambda、Stream 等后起内容。模式的原理与结构不会过时,但具体写法需要读者自行迁移到现代 Java,这也正好是一个练习机会。
这本书的分类为什么和常见的三种类型不一样?
作者把 23 种模式重新划分为接口型、职责型、构造型、操作型、扩展型五类,目的是让每一类都对应一类实际设计困境,便于读者在遇到问题时快速定位该考虑哪组模式,而非按模式的静态结构归类。
Oozinoz 是什么?需要自己下载源码吗?
Oozinoz 是全书贯穿的虚构工厂项目,用于承载各个模式的示例场景。附录 C 说明了其源代码的组织方式,读者通常可以从配套渠道获取源码,边读边改比仅看纸质代码收获更大。
练习有答案吗?自学能看懂吗?
有。附录 A 是练习指南,附录 B 给出全部练习的参考答案,附录 D 是 UML 速览。自学时建议先独立完成再对照答案,附录 B 的存在使这本书可以脱离课堂独立使用。
读者评论
查询本书
本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。