第三部分 薪水支付案例研究
21 COMMAND模式和ACTIVEOBJECT模式:多功能与多任务
21.1 简单的Command
21.2 事务
21.2.1 实体上解耦和时间上解耦
21.2.2 时间上解耦
21.3 Undo()方法
21.4 ACTIVE OBJECT模式
21.5 结论
21.6 参考文献
22 TEMPLATE METHOD模式和STRATEGY模式:继承和委托
22.1 TEMPLATE METHOD模式
22.1.1 滥用模式
22.1.2 冒泡排序
22.2 STRATEGY模式
22.3 结论
22.4 参考文献
23 FACADE模式和MEDIATOR模式
23.1 FACADE模式
23.2 MEDIATOR模式
23.3 结论
23.4 参考文献
24 SINGLETON模式和MONOSTATE模式
24.1 SINGLETON模式
24.1.1 SINGLETON模式的好处
24.1.2 SINGLETON模式的代价
24.1.3 运用SINGLETON模式
24.2 MONOSTATE模式
24.2.1 MONOSTATE模式的好处
24.2.2 MONOSTATE模式的代价
24.2.3 运用MONOSTATE模式
24.3 结论
24.4 参考文献
25 NULL OBJECT模式
25.1 描述
25.2 结论
25.3 参考文献
26 薪水支付案例研究:第一次 迭代开始
26.1 初步的规格说明
26.2 基于用例分析
26.2.1 增加新雇员
26.2.2 删除雇员
26.2.3 登记考勤卡
26.2.4 登记销售凭条
26.2.5 登记工会服务费
26.2.6 更改雇员明细
26.2.7 发薪日
26.3 反思:找出底层的抽象
26.3.1 雇员支付类别抽象
26.3.2 支付时间表抽象
26.3.3 支付方式
26.3.4 从属关系
26.4 结论
26.5 参考文献
27 薪水支付案例研究:实现
27.1 事务
27.1.1 增加雇员
27.1.2 删除雇员
27.1.3 考勤卡、销售凭条以及服务费用
27.1.4 更改雇员属性
27.1.5 犯了什么晕
27.1.6 支付雇员薪水
27.1.7 支付领月薪的雇员薪水
27.1.8 支付钟点工薪水
27.2 主程序
27.3 数据库
27.4 结论
27.5 关于本章
27.6 参考文献
第四部分 打包薪水支付系统
28 包和组件的设计原则
28.1 包和组件
28.2 组件的内聚性原则:粒度
28.2.1 重用——发布等价原则
28.2.2 共同重用原则
28.2.3 共同封闭原则
28.2.4 组件内聚性总结
28.3 组件的耦合性原则:稳定性
28.3.1 无环依赖原则
28.3.2 稳定依赖原则
28.3.3 稳定抽象原则
28.4 结论
29 FACTORY模式
29.1 依赖问题
29.2 静态类型与动态类型
29.3 可替换的工厂
29.4 对测试支架使用对象工厂
29.5 工厂的重要性
29.6 结论
29.7 参考文献
30 薪水支付案例研究:包分析
30.1 组件结构和符号
30.2 应用CCP
30.3 应用REP
30.4 耦合和封装
30.5 度量
30.6 度量薪水支付应用程序
30.6.1 对象工厂
30.6.2 重新思考内聚的边界
30.7 最终的包结构
30.8 结论
30.9 参考文献
31 COMPOSITE模式
31.1 组合命令
31.2 多重性还是非多重性
31.3 结论
32 OBSERVER——演化至模式
32.1 数字时钟
32.2 OBSERVER模式
32.2.1 模型
32.2.2 面向对象设计原则的运用
32.3 结论
32.4 参考文献
33 ABSTRACT SERV ER模式、 ADAPTER模式和BRIDGE模式
33.1 ABSTRACT SERVER模式
33.2 ADAPTER模式
33.2.1 类形式的ADAPTER模式
33.2.2 调制解调器问题、适配器以及LSP
33.3 BRIDGE模式
33.4 结论
33.5 参考文献
34 PROXY模式和GATEWAY模式:管理第三方API
34.1 PROXY模式
34.1.1 实现PROXY模式
34.1.2 小结
34.2 数据库、中间件以及其他第三方接口
34.3 TABLE DATA GATEWAY
34.3.1 测试和内存TDG
34.3.2 测试DbGateWay
34.4 可以用于数据库的其他模式
34.5 结论
34.6 参考文献
35 VISITOR模式
35.1 VISITOR模式
35.2 ACYCLIC VISITOR模式
35.3 DECORATOR模式
35.4 EXTENSION OBJECT模式
35.5 结论
35.6 参考文献
36 STATE模式
36.1 嵌套switch/case语句
36.1.1 内部作用域的状态变量
36.1.2 测试动作
36.1.3 代价和收益
36.2 迁移表
36.2.1 使用表解释
36.2.2 代价和收益
36.3 STATE模式
36.3.1 STATE模式和STRATEGY模式
36.3.2 代价和收益
36.4 状态机编译器
36.4.1 SMC生成的Turnstile.cs以及其他支持文件
36.4.2 代价和收益
36.5 状态机应用的场合
36.5.1 作为GUI中的高层应用策略
36.5.2 GUI交互控制器
36.5.3 分布式处理
36.6 结论
36.7 参考文献
37 薪水支付案例研究:数据库
37.1 构建数据库
37.2 一个代码设计缺陷
37.3 增加雇员
37.4 事务
37.5 加载Employee对象
37.6 还有什么工作
38 薪水支付系统用户界面:Model-View-Presenter
38.1 界面
38.2 实现
38.3 构建窗口
38.4 Payroll窗口
38.5 真面目
38.6 结论
38.7 参考文献