封面
版权信息
内容简介
插图
敏捷宣言
敏捷宣言的原则
面向对象设计的原则
极限编程实践
推荐序
前言
致谢
作者简介
第Ⅰ部分 敏捷开发
第1章 敏捷实践
敏捷联盟
个人和互动优先于过程和工具
可以工作的软件优先于详尽的文档
客户合作优先于合同谈判
应对变化优先于遵循计划
原则
小结
参考文献
第2章 极限编程概述
极限编程实践
完整的团队
用户故事
短的周期
验收测试
结对编程
测试驱动开发
集体所有权
持续集成
可持续的开发速度
开放的工作空间
规划游戏
简单设计
重构
隐喻
小结
参考文献
第3章 计划
初探
技术预研、故事拆分和速率
发布计划
迭代计划
定义“完成”
任务计划
迭代
跟踪
小结
参考文献
第4章 测试
测试驱动开发
验收测试
意外获得的架构
小结
参考文献
第5章 重构
素数产生程序:一个简单的重构示例
重构
最后检查
小结
参考文献
第6章 一次编程实践
保龄球比赛
小结
保龄球规则概述
第Ⅱ部分 敏捷设计
臭味和原则
参考文献
第7章 什么是敏捷设计
设计臭味
设计的臭味:软件腐化的气味
僵化
脆弱
顽固
粘滞
不必要的复杂
不必要的重复
晦涩
为什么软件会腐化
Copy程序
一个熟悉的场景
Copy程序的敏捷设计
小结
参考文献
第8章 单一职责原则(SRP)
定义职责
分离耦合的职责
持久化
小结
参考文献
第9章 开/关原则(OCP)
描述
Shape应用程序
违反OCP
遵循OCP
预测变化和“贴切的”结构
放置“钩子”
使用抽象获得显式封闭性
使用“数据驱动”的方法获取封闭性
小结
参考文献
第10章 里氏替换原则(LSP)
违反LSP的情形
更微妙的违反情形
一个实际的例子
用提取公共部分的方法代替继承
启发式规则和习惯用法
小结
参考文献
第11章 依赖倒置原则(DIP)
层次化
倒置的接口所有权
依赖于抽象
一个简单的DIP例子
找出底层抽象
熔炉示例
小结
参考文献
第12章 接口隔离原则(ISP)
接口污染
分离客户端就是分离接口
类接口和对象接口
通过委托来分离接口
使用多重继承隔离接口
ATM用户界面的例子
小结
参考文献
第13章 C#程序员UML概述(C#语言)
类图
对象图
顺序图
协作图
状态图
小结
参考文献
第14章 使用UML
为什么建模
为什么要建软件模型
写代码之前是否应该做好详细设计
有效使用UML
与他人交流
脉络图
项目结束文档
要保留的和要丢弃的
迭代式改进
行为优先
检查结构
想象代码
图示的演化
何时以及如何绘制图示
何时要画图,何时不要画图
CASE工具
那么,文档呢
小结
第15章 状态图
基础知识
特定事件
超状态
初始伪状态和结束伪状态
使用FSM图示
小结
第16章 对象图
即时快照
主动对象
小结
第17章 用例
写用例
备选流程
其他东西呢
用例图
小结
参考文献
第18章 顺序图
基础知识
对象、生命线、消息及其他
创建和析构
简单循环
时机和场合
高级概念
循环和条件
耗费时间的消息
异步消息
多线程
主动对象
向接口发送消息
小结
第19章 类图
基础知识
类
关联
继承
类图示例
细节
类的衍型
抽象类
属性
聚合
组合
多重性
关联衍型
嵌套类
关联类
关联修饰符
小结
参考文献
第20章 咖啡的启示
Mark IV型专用咖啡机
规格说明书
常见的丑陋方案
虚构的抽象
改进方案
实现抽象模型
这个设计的好处
面向对象过度设计
参考文献
第Ⅲ部分 案例学习:薪水支付系统Payroll
薪水支付系统Payroll的基本规格说明书
练习
第21章 命令模式和主动对象模式
简单的命令模式
事务操作
实体上的解耦和时间上的解耦
时间上的解耦
UNDO()方法
主动对象模式
小结
参考文献
第22章 模板方法模式和策略模式:继承和委托
模板方法模式
模式滥用
冒泡排序
策略模式
小结
参考文献
第23章 外观模式和中介者模式
外观模式
中介者模式
小结
参考文献
第24章 单例模式和单状态模式
单例模式
好处
代价
单例模式实战
单状态模式
好处
代价
单状态模式实战
小结
参考文献
第25章 空对象模式
描述
小结
参考文献
第26章 案例学习:Payroll系统的第一轮迭代
规格说明书
基于用例进行分析
添加新员工
删除员工
提交考勤卡
提交销售凭证
提交工会服务费
更改员工信息
薪水支付日
反思:我们从中学到了什么
薪水支付类别抽象
支付薪水时间表抽象
支付方式
工会所属关系
小结
参考文献
第27章 案例学习:Payroll系统实现
事务
添加员工
Payoll系统的数据库
删除雇员
考勤卡、销售凭证和服务费用
更改员工信息
更改员工类别
我犯了什么晕?
支付员工薪水
我们是否希望开发人员来做商业决策?
按月薪结算的员工支付薪水
支付小时工的薪水
主程序
数据库
小结
关于本章
参考文献
第Ⅳ部分 案例学习:打包Payroll系统
第28章 包和组件的设计原则
包和组件
组件的内聚性原则:粒度
重用-发布等价原则(REP)
共同重用原则(CRP)
共同封闭原则(CCP)
组件内聚性小结
组件耦合原则:稳定性
无环依赖原则(ADP)
稳定依赖原则(SDP)
稳定抽象原则(SAP)
小结
第29章 工厂模式
依赖问题
静态类型与动态类型
可替换的工厂
对测试支架使用对象工厂
工厂模式的重要性
小结
参考文献
第30章 案例学习:Payroll系统的包分析
组件结构和符号
应用共同封闭原则(CCP)
应用发布等价原则(REP)
耦合和封装
度量指标
在薪水支付系统中使用这些度量
对象工厂
重新思考内聚的边界
最终的包结构
小结
参考文献
第31章 组合模式
组合命令
多重性还是非多重性
小结
第32章 观察者模式
数字时钟
观察者模式
模型
观察者模式与面向对象设计原则
小结
参考文献
第33章 抽象服务器、适配器和桥接模式
抽象服务器模式
适配器模式
类形式的适配器
调制解调器问题、适配器和里氏替换原则
桥接模式
小结
参考文献
第34章 代理模式和TDG模式:管理第三方API
代理模式
代理购物车应用
小结
处理数据库、中间件以及其他第三方接口
TDG模式
测试和内存TDG
测试DbGateway
小结
参考文献
第35章 访问者模式
访问者模式
非循环访问者模式
使用访问者模式
访问者模式的其他用途
装饰者模式
扩展对象模式
小结
参考文献
第36章 状态模式
嵌套语句switch/case
内部作用域内有效的状态变量
测试动作
代价和好处
迁移表
使用表解释
代价和收益
状态模式
状态模式和策略模式
使用状态模式的代价和好处
SMC(状态机编译器)
SMC生成的Turnstile.cs以及其他支持文件
代价和收益
状态机的应用场合
作为GUI中的高层应用策略
GUI交互控制器
分布式处理
小结
参考文献
第37章 案例学习:Payroll系统的数据库
建立数据库
代码设计中的一个缺陷
增加雇员
事务
加载Employee对象
还有什么工作?
第38章 案例学习:Payroll系统的用户界面
界面
实现
构建窗口
Payroll的窗口
真面目
小结
参考
附录A 两家公司的讽刺故事
附录B 源码即设计
文后插图
更新时间:2023-08-31 19:26:12