面向对象开发参考手册

面向对象开发参考手册

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

本书适合开发人员学习使用,尤其适于那些刚毕业的“菜鸟”们学习使用。

内容简介

面向对象软件设计的经典书籍,如《敏捷软件开发》、《领域驱动设计》、《设计模式》、《测试驱动开发》、《极限编程》、《重构》等,已名声在外,其解读书籍也多如牛毛。但其往往只讲述某个方面,要整体理解,必须通读原著,阅读量颇大,特别原著比较深奥,短时间内很难完全理解。市面上缺乏整体归纳、提炼浓缩的书籍。

本书致力于让读者形成一个整体、全面的概念和印象,浓缩、提炼了经典书籍的精华,结合作者自身十几年的经验,力争呈现一本深入浅出、兼收并蓄、涉及各个方面的综合版本,可以缩减学习的时间成本,并能够像工具书一样翻阅参考。

作者简介

作者黄磊,毕业于管理信息系统专业,毕业后一直从事企业级信息系统软件的分析、设计、开发、测试和实施工作。广州健迅科技的副总经理、技术总监,主持研发了数十套企业级信息系统软件产品,以及在国内数十家大型企事业单位的实施,也直接参与了其中若干个项目的设计和程序编写。有过失败,也有过成功;做过正确的事,也做过错误的事。愿把20年的软件设计和开发过程中的感受、理念、思考与大家一起分享。

章节目录

版权信息

内容提要

前言

第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 牢记测试先行

写在最后

面向对象开发参考手册是2014年由人民邮电出版社出版,作者黄磊。

得书感谢您对《面向对象开发参考手册》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
PHP动态Web开发技术 电子书
理论结合实践,教你学会PHP动态Web开发。
持续交付2.0:业务引领的DevOps精要 电子书
世界级互联网公司软件交付工作原则与方法解析 作者在持续交付领域多年实践经验的精华总结 《持续交付:发布可靠软件的系统方法》作者作序推荐! 国内知名互联网公司多位管理者与领域专家合力倾情推荐! 持续交付2.0不只是关于软件的交付模型,而是从业务问题出发,关注业务假设验证速度的双环业务模型。只有从业务目标出发的持续交付实践才有强大的创造力和生命力! 书中指出,持续交付2.0双环模型高速运转的三个支柱分别是组织机制、软件架构和软件交付基础设施,同时给出了提升价值探索环以及快速验证环运转速度的多种可行方法。 本书还为我们呈现了在企业内部改善持续交付2.0能力所需遵循的基本原则,包括组织文化建设、软件系统架构、业务协作、配置管理、构建集成、自动化测试、发布与监控七大板块,并指出各领域实践关键点,以及多种可实操性方法。同时,通过3个完整的实践案例过程分析,说明每个企业或团队都必须从自己的业务目标出发,根据自己的实际情况,制定自己的改善路线。
C#面向对象程序设计(微课版) 电子书
本书全面介绍和讲解了C#语言的全部基础语法,信息量大、知识性强、条理清晰,编程实例丰富。
CSS世界 电子书
书中介绍大量许多前端开发人员都不知道的CSS知识点。通过阅读本书,读者会对CSS世界的深度和广度有一个全新的认识。
程序是怎样跑起来的(第3版) 电子书
一本书帮你了解从用户双击程序图标到程序开始运行之间到底发生了什么。