互联网
类型
可以朗读
语音朗读
192千字
字数
2013-11-01
发行日期
展开全部
主编推荐语
本书适合开发人员学习使用,尤其适于那些刚毕业的“菜鸟”们学习使用。
内容简介
面向对象软件设计的经典书籍,如《敏捷软件开发》、《领域驱动设计》、《设计模式》、《测试驱动开发》、《极限编程》、《重构》等,已名声在外,其解读书籍也多如牛毛。但其往往只讲述某个方面,要整体理解,必须通读原著,阅读量颇大,特别原著比较深奥,短时间内很难完全理解。市面上缺乏整体归纳、提炼浓缩的书籍。
本书致力于让读者形成一个整体、全面的概念和印象,浓缩、提炼了经典书籍的精华,结合作者自身十几年的经验,力争呈现一本深入浅出、兼收并蓄、涉及各个方面的综合版本,可以缩减学习的时间成本,并能够像工具书一样翻阅参考。
目录
- 版权信息
- 内容提要
- 前言
- 第1章 转变观念
- 1.1 传统的面向对象
- 1.2 重新认识对象
- 1.3 如何分解对象?
- 1.4 如何设计对象?
- 1.5 设计对象的接口
- 1.6 改进对象的继承
- 1.7 设计抽象的系统
- 1.8 设计美的系统
- 第2章 经典模式
- 2.1 设计模式的基本原则
- 2.2 抽象工厂模式(Abstract Factory)
- 2.3 抽象服务模式(Abstract Server)
- 2.4 无环访问者模式(Acyclic Visitor)
- 2.5 适配器模式(Adapter)
- 2.6 桥接模式(Bridge)
- 2.7 生成器模式(Builder)
- 2.8 职责链模式(Chain of Responsibility)
- 2.9 命令模式(Command)
- 2.10 组合模式(Composite)
- 2.11 装饰模式(Decorator)
- 2.12 扩展对象模式(Extension Object)
- 2.13 外观模式(Façade)
- 2.14 工厂方法模式(Factory Method)
- 2.15 享元模式(Flyweight)
- 2.16 解释器模式(Interpreter)
- 2.17 迭代器模式(Iterator)
- 2.18 中介者模式(Mediator)
- 2.19 备忘录模式(Memento)
- 2.20 空对象模式(Null Object)
- 2.21 观察者模式(Obschmerver)
- 2.22 原型模式(Prototype)
- 2.23 代理模式(Proxy)
- 2.24 数量模式(Quantity)
- 2.25 范围模式(Range)
- 2.26 单件模式(Singleton)
- 2.27 规格模式(Specification)
- 2.28 状态模式(State)
- 2.29 策略模式(Strategy)
- 2.30 模板方法模式(Template Method)
- 2.31 访问者模式(Visitor)
- 2.32 设计模式应用的综合例子
- 第3章 敏捷软件
- 3.1 基本原则
- 3.1.1 对象设计原则
- 3.1.2 包的设计原则
- 3.2 敏捷建模
- 3.2.1 关于建模的一些认识误区
- 3.2.2 敏捷建模的原则和实践
- 3.3 按意图编程
- 3.3.1 名字:选择语义清晰的名字
- 3.3.2 简单:做最简单但又能工作的事情
- 3.3.3 假设:做有根据的假设
- 3.3.4 注释:“不要注释”
- 3.4 软件的度量
- 3.4.1 对象的度量
- 3.4.2 包的度量
- 3.4.3 测试的度量
- 3.5 延伸阅读:源代码就是设计
- 第4章 测试驱动
- 4.1 什么是TDD
- 4.1.1 测试原则:尽早、经常、自动化
- 4.1.2 验收测试
- 4.1.3 模拟对象
- 4.2 测试技巧
- 4.2.1 测试之前的思想准备
- 4.2.2 测试之间的关系——相互独立的测试
- 4.2.3 什么时候写测试
- 4.2.4 如何开始写测试——断言优先
- 4.2.5 如何选择测试数据——显然数据
- 4.2.6 测试如何组织——测试列表
- 4.2.7 测试哪些东西
- 4.2.8 简单的测试
- 4.2.9 易读的测试
- 4.2.10 可维护的测试
- 4.2.11 可运行的测试
- 4.2.12 可调试的测试
- 4.2.13 测试的初始化
- 4.2.14 使用断言的消息参数
- 4.2.15 使用代码覆盖率工具
- 4.2.16 测试代码也要不断重构
- 4.3 开发工具的测试框架
- 第5章 重构方法
- 5.1 软件的味道
- 5.1.1 重复代码
- 5.1.2 过长方法
- 5.1.3 过大类
- 5.1.4 过长参数列表
- 5.1.5 发散变化
- 5.1.6 霰弹式手术
- 5.1.7 依恋情结(交往不当)
- 5.1.8 数据泥团
- 5.1.9 基本类型偏执
- 5.1.10 switch语句
- 5.1.11 平行继承体系
- 5.1.12 冗赘类
- 5.1.13 夸夸其谈的未来性
- 5.1.14 令人迷惑的临时字段
- 5.1.15 过度耦合的消息链
- 5.1.16 中间转手人
- 5.1.17 狎昵关系
- 5.1.18 异曲同工的类
- 5.1.19 不完善的程序库类
- 5.1.20 数据类
- 5.1.21 被拒绝的遗赠
- 5.1.22 不当注释
- 5.1.23 过于复杂的条件逻辑
- 5.1.24 不恰当的暴露
- 5.1.25 解决方案蔓延
- 5.1.26 组合爆炸
- 5.1.27 怪异的解决方案
- 5.2 如何开始重构
- 5.2.1 什么时候重构
- 5.2.2 什么时候不能重构
- 5.2.3 怎样开始重构——掌握好重构的节奏
- 5.3 重构方法索引
- 5.4 重新组织方法
- 5.4.1 提炼方法
- 5.4.2 内联方法
- 5.4.3 内联临时变量
- 5.4.4 引入解释变量
- 5.4.5 移除对参数的赋值
- 5.4.6 用方法对象替代方法
- 5.4.7 用查询替代临时变量
- 5.4.8 分解临时变量
- 5.4.9 替换算法
- 5.5 在对象间迁移特性
- 5.5.1 提炼类
- 5.5.2 隐藏委托
- 5.5.3 内联类
- 5.5.4 引入外加方法
- 5.5.5 引入本地扩展
- 5.5.6 迁移字段
- 5.5.7 迁移方法
- 5.5.8 移除中间人
- 5.6 重新组织数据
- 5.6.1 双向关联改为单向关联
- 5.6.2 引用对象改为值对象
- 5.6.3 单向关联改为双向关联
- 5.6.4 值对象改为引用对象
- 5.6.5 复制被观察的数据
- 5.6.6 封装集合
- 5.6.7 封装字段
- 5.6.8 用对象替代数组
- 5.6.9 用对象替代数据值
- 5.6.10 用符号常数替代魔幻数字
- 5.6.11 用数据类替代记录
- 5.6.12 用字段替代子类
- 5.6.13 用类替代类型码
- 5.6.14 用状态/策略模式替代类型码
- 5.6.15 用子类替代类型码
- 5.6.16 自封装字段
- 5.7 简化条件表达式
- 5.7.1 合并条件表达式
- 5.7.2 合并重复的条件片断
- 5.7.3 分解条件式
- 5.7.4 引入断言
- 5.7.5 引入空对象
- 5.7.6 移除控制标志
- 5.7.7 用命令模式替代条件调度
- 5.7.8 用策略模式替代条件逻辑
- 5.7.9 用多态替代条件式
- 5.7.10 用卫述语句替代嵌套条件式
- 5.7.11 用状态模式替代状态改变条件式
- 5.8 简化方法调用
- 5.8.1 增加参数
- 5.8.2 构造函数链
- 5.8.3 组合方法
- 5.8.4 封装向下转型
- 5.8.5 隐藏方法
- 5.8.6 引入参数对象
- 5.8.7 把聚集操作迁移到收集参数
- 5.8.8 把聚集操作迁移到访问者模式
- 5.8.9 把装饰功能迁移到装饰者模式
- 5.8.10 参数化方法
- 5.8.11 保持对象完整
- 5.8.12 移除参数
- 5.8.13 移除设置方法
- 5.8.14 重命名方法
- 5.8.15 用工厂方法替代构造函数
- 5.8.16 用异常替代错误码
- 5.8.17 用测试替代异常
- 5.8.18 用组合模式替代隐含树
- 5.8.19 用明确方法替代参数
- 5.8.20 用方法替代参数
- 5.8.21 分离查询和修改
- 5.9 处理概括关系
- 5.9.1 折叠继承体系
- 5.9.2 提炼适配器模式
- 5.9.3 提炼组合模式
- 5.9.4 提炼接口
- 5.9.5 提炼子类
- 5.9.6 提炼超类
- 5.9.7 塑造模板方法模式
- 5.9.8 上移构造函数
- 5.9.9 上移字段
- 5.9.10 上移方法
- 5.9.11 下移字段
- 5.9.12 下移方法
- 5.9.13 用继承替代委托
- 5.9.14 用观察者模式替代硬编码通知
- 5.9.15 用解释器模式替代隐式语言
- 5.9.16 用委托替代继承
- 5.9.17 用组合模式替代一/多之分
- 5.9.18 统一接口
- 5.9.19 用适配器模式统一接口
- 5.10 封装对象的创建
- 5.10.1 用工厂封装类
- 5.10.2 用生成器模式封装组合模式
- 5.10.3 提炼参数
- 5.10.4 内联单件模式
- 5.10.5 用工厂方法引入多态创建
- 5.10.6 用单件模式限制实例化
- 5.10.7 把创建知识迁移到工厂
- 5.10.8 用创建方法替代构造函数
- 5.11 大型重构
- 5.11.1 过程化设计转化为对象设计
- 5.11.2 提炼继承体系
- 5.11.3 分离域和表示层
- 5.11.4 梳理分解继承体系
- 第6章 领域模型
- 6.1 目标
- 6.1.1 消化知识
- 6.1.2 交流语言
- 6.1.3 模型和代码绑定
- 6.2 基本构件
- 6.2.1 分离领域
- 6.2.2 关联
- 6.2.3 实体
- 6.2.4 值对象
- 6.2.5 服务
- 6.2.6 模块(包)
- 6.2.7 聚合
- 6.2.8 工厂
- 6.2.9 仓储
- 6.3 深层模型
- 6.4 挖掘隐含概念
- 6.4.1 概念挖掘
- 6.4.2 显式约束
- 6.4.3 作为领域对象的流程
- 6.4.4 规格模式
- 6.5 柔性设计
- 6.5.1 释义接口
- 6.5.2 无副作用函数
- 6.5.3 断言
- 6.5.4 概念轮廓
- 6.5.5 孤立类
- 6.5.6 操作封闭
- 6.5.7 声明性设计
- 6.6 战略性设计
- 6.7 限界上下文
- 6.7.1 持续集成
- 6.7.2 上下文映射
- 6.7.3 共享内核
- 6.7.4 客户/供应商开发团队
- 6.7.5 同流者
- 6.7.6 防腐层
- 6.7.7 隔离方式
- 6.7.8 开放主机服务
- 6.7.9 公布语言
- 6.8 模型精炼
- 6.8.1 核心领域
- 6.8.2 通用子域
- 6.8.3 领域愿景声明
- 6.8.4 突出核心
- 6.8.5 内聚机制
- 6.8.6 隔离核心
- 6.8.7 抽象核心
- 6.9 大比例结构
- 6.9.1 渐进顺序
- 6.9.2 系统隐喻
- 6.9.3 职责层
- 6.9.4 知识级别
- 6.9.5 插件框架
- 第7章 敏捷过程
- 7.1 敏捷宣言
- 7.2 敏捷过程的原则
- 7.3 典型的敏捷过程
- 7.3.1 计划
- 7.3.2 测试
- 7.3.3 重构
- 7.4 敏捷实践
- 7.4.1 基本实践
- 7.4.2 扩展实践
- 第8章 应用实践
- 8.1 培养敏感性
- 8.2 统一版本(产品化)
- 8.3 从数据模型中心到领域模型中心
- 8.3.1 让领域对象封装数据结构
- 8.3.2 O-R映射
- 8.3.3 推迟数据库和UI的实现
- 8.4 使用通用语言建模
- 8.5 分离接口与实现
- 8.6 区分职责与功能
- 8.7 提炼知识
- 8.8 消除基本类型偏执
- 8.9 合理划分对象
- 8.10 牢记测试先行
- 写在最后
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。