标题：深入浅出设计模式
基本信息
ISBN：9787302135647
定价：39元
印次：1-2
装帧：平装
印刷日期：2006-12-22
图书简介
本书是一本通俗易懂的设计模式入门指导图书。
作者用C#和Java两种语言，借助现实生活范例和图片演示，全面阐释GRASP及GoF23种设计模式的概念及其编程应用，帮助你领悟设计模式的思想及精华，并将其融会贯通、灵活应用到自己的开发过程中。
全书用两章篇幅对设计模式和GRASP作了基本介绍，3种设计模式的讲解：对于每一种模式，先给出定义，接着通过类比方式用一个现实世界中的例子说明模式的应用，然后分别以C#和Java代码例述模式的架构实现。最后一章给出了两个设计模式综合案例，为读者实践设计模式提供了很好的学习环境。附录部分精心安排了自测题及答案，供读者练习并检验学习效果。
本书适合程序开发人员阅读，尤其适合作为大学计算机专业高年级学生和研究生的教学参考书。
书籍目录
目录
第1章基本概念 1
1.1什么是设计模式 2
1.2设计模式的作用 3
1.3GRASP模式的分类 4
1.4GoF设计模式的分类 4
1.5模式的学习阶段 6
第2章负责任地设计对象——GRASP 9
2.1InformationExpert（信息专家） 11
2.2Creator（创造者） 13
2.3LowCoupling（低耦合） 14
2.4HighCohesion（高内聚） 15
2.5Controller（控制器） 17
2.6Polymorphism（多态） 18
2.7PureFabrication（纯虚构） 19
2.8Indirection（间接） 20
2.9ProtectedVariations（受保护变化） 21
第3章GoF-CreationalDesignPatterns创建型设计模式 23
3.1SimpleFactoryPattern（简单工厂模式） 24
3.1.1定义 24
3.1.2现实例子——国旗生产厂 26
3.1.3C#实例1——电子付款系统 26
3.1.4C#实例2——学校登录系统 29
3.1.5Java实例——手机简单工厂 32
3.1.6优势和缺陷 34
3.1.7应用情景 34
3.2FactoryMethodPattern（工厂方法模式） 35
3.2.1定义 35
3.2.2现实例子——兵工厂 36
3.2.3C#实例——多文档系统 37
3.2.4Java实例——扩展了的手机工厂 41
3.2.5优势和缺陷 44
3.2.6应用情景 44
3.3AbstractFactoryPattern（抽象工厂模式） 45
3.3.1定义 45
3.3.2现实例子——扩展了的兵工厂 48
3.3.3C#实例——大陆生态系统 49
3.3.4Java实例——电脑产品 52
3.3.5优势和缺陷 57
3.3.6应用情景 57
3.4BuilderPattern（建造者模式） 58
3.4.1定义 58
3.4.2现实例子——快餐店 60
3.4.3C#实例——车间造车 61
3.4.4Java实例——建造房屋 65
3.4.5优势和缺陷 69
3.4.6应用情景 70
3.5PrototypePattern（原型模式） 70
3.5.1定义 70
3.5.2现实中的拷贝-粘贴 71
3.5.3C#实例——颜色管理器 72
3.5.4Java实例——简单ToolBar 74
3.5.5ShallowCopy与DeepCopy 76
3.5.6优势和缺陷 82
3.5.7应用情景 82
3.6SingletonPattern（单例模式） 82
3.6.1定义 82
3.6.2现?抵械牡ダ??猈indowsTaskManager 83
3.6.3C#实例——负载均衡控制器 84
3.6.4Java实例——系统日志 86
3.6.5DoubleCheckLocking（双检锁） 89
3.6.6优势和缺陷 93
3.6.7应用情景 93
第4章GoF-StructuralDesignPatterns结构型设计模式 95
4.1AdapterPattern（适配器模式） 96
4.1.1定义 96
4.1.2现实中的实例——电脑电源适配器 97
4.1.3C#实例——化学数据银行 98
4.1.4Java实例——清洁系统 102
4.1.5优势和缺陷 104
4.1.6应用情景 104
4.2BridgePattern（桥接模式） 104
4.2.1定义 104
4.2.2现实中的实例——男人的约会 106
4.2.3C#实例——商业对象与数据对象 107
4.2.4Java实例——不同系统的图像处理 112
4.2.5优势和缺陷 114
4.2.6应用情景 115
4.3CompositePattern（组合模式） 115
4.3.1定义 115
4.3.2组合模式的现实应用——资源管理器 117
4.3.3C#实例——图形树状对象结构 118
4.3.4Java实例——文档格式化 121
4.3.5优势和缺陷 124
4.3.6应用情景 125
4.4DecoratorPattern（装饰模式） 125
4.4.1定义 125
4.4.2现实中的装饰模式——相架 126
4.4.3C#实例——图书馆中的项目 127
4.4.4Java实例——自定义JButton 131
4.4.5优势和缺陷 133
4.4.6应用情景 134
4.5FacadePattern（外观模式） 134
4.5.1定义 134
4.5.2现实中的实例——顾客服务员 135
4.5.3C#实例——抵押申请审核 136
4.5.4Java实例——冲茶 139
4.5.5优势和缺陷 143
4.5.6应用情景 143
4.6FlyweightPattern（轻量级模式） 144
4.6.1定义 144
4.6.2实例——中游的四国军棋 146
4.6.3C#实例——文档编辑器 147
4.6.4Java实例——装载图像 151
4.6.5优势和缺陷 154
4.6.6应用情景 154
4.7ProxyPattern（代理模式） 154
4.7.1定义 154
4.7.2几个现实中的实例 156
4.7.3C#实例——数学代理 158
4.7.4Java实例——Socket回声 160
4.7.5优势和缺陷 165
4.7.6应用情景 165
第5章GoF-BehavioralDesignPatterns行为型设计模式 167
5.1ChainofResponsibility（责任链模式） 168
5.1.1定义 168
5.1.2现实中的实例——军情的传递 169
5.1.3C#实例——采购分级审批 170
5.1.4Java实例——智能大厦安全系统 174
5.1.5优势和缺陷 178
5.1.6应用情景 178
5.2CommandPattern（命令模式） 179
5.2.1定义 179
5.2.2现实中的实例——餐馆订菜 180
5.2.3C#实例——简单计算器 181
5.2.4Java实例——总开关 185
5.2.5优势和缺陷 189
5.2.6应用情景 189
5.3InterpreterPattern（解释器模式） 190
5.3.1定义 190
5.3.2现实示例——音乐符号 192
5.3.3C#实例——中国金钱大写转换 192
5.3.4Java实例——自定义程序解释器 197
5.3.5优势和缺陷 204
5.3.6应用情景 205
5.4IteratorPattern（迭代器模式） 205
5.4.1定义 205
5.4.2现实示例——电视节目选择器 206
5.4.3C#实例——遍历例子 207
5.4.4Java实例——两个迭代器 211
5.4.5优势和缺陷 213
5.4.6应用情景 214
5.5MediatorPattern（中介者模式） 214
5.5.1定义 214
5.5.2现实示例——机场控制塔 215
5.5.3C#实例——聊天室 216
5.5.4Java实例——多线程通信 220
5.5.5优势和缺陷 223
5.5.6应用情景 223
5.6MementoPattern（备忘录模式） 223
5.6.1定义 223
5.6.2现实示例——音响均衡器 226
5.6.3C#实例——销售目标 226
5.6.4Java实例——多次Undo（取消）操作 231
5.6.5优势和缺陷 236
5.6.6应用情景 236
5.7ObserverPattern（观察者模式） 236
5.7.1定义 236
5.7.2现实例子——拉登现身了 238
5.7.3C#实例——猫和老鼠 238
5.7.4C#实例——股票变化 241
5.7.5Java实例——监控系统 245
5.7.6优势和缺陷 248
5.7.7应用情景 248
5.8StatePattern（状态模式） 248
5.8.1定义 248
5.8.2现实例子——心情好坏 250
5.8.3C#实例——账户分类 250
5.8.4Java实例——汽车的变速档 258
5.8.5优势和缺陷 261
5.8.6应用情景 261
5.9StrategyPattern（策略模式） 261
5.9.1定义 261
5.9.2现实例子——去机场的策略 263
5.9.3C#实例——排序方法 263
5.9.4Java实例——多格式输出 266
5.9.5优势和缺陷 272
5.9.6应用情景 272
5.10TemplateMethodPattern（模板方法模式） 272
5.10.1定义 272
5.10.2现实例子——厨师烹调 274
5.10.3C#实例——数据库连接模板 274
5.10.4Java实例——冒泡排序模板 277
5.10.5优势和缺陷 280
5.10.6应用情景 280
5.11VisitorPattern（访问者模式） 280
5.11.1定义 280
5.11.2现实例子——收银员收银计费 282
5.11.3C#实例——人事评估 283
5.11.4Java实例——维修工程师检查车辆 287
5.11.5优势和缺陷 291
5.11.6应用情??291
第6章模式的综合应用 293
6.1Java实例——扩展的日志记录器 294
6.2C#实例——存储分析器 298
6.3用模式生成程序架构 316
附录1自测题 321
附录2自测题答案 331
参考文献 337[1]