软件秘笈:设计模式那点事


请输入要查询的词条内容:

软件秘笈:设计模式那点事




基本信息


作者:郑阿奇(作者)

出版社: 电子工业出版社; 第1版 (2011年11月1日)

丛书名: 魅力实践发现

页数: 628页

ISBN: 9787121147821

内容简介


本书在第1章软件设计模式概述后,从第2章到第24章诠释23个软件设计模式。每一种都以一个生活故事开始,然后是模式定义、模式分析、模式实现、设计原则和使用场合。模式实现通过Eclipse中的Java工程展开,采用软件编程诠释设计模式故事中的情节和操作,非常有趣。在这个基础上,总结该软件设计模式的设计原则,最后提出使用场合。第25章对各种软件设计模式进行系统总结,第26章是各种软件设计模式综合应用。

目录


目 录

1 设计模式概述 1

1.1 计算机软件的发展现状 2

1.2 引入设计模式的必要性 2

1.3 软件设计遵循的基本原则 3

1.3.1 高内聚、低耦合 3

1.3.2 面向抽象编程 3

1.3.3 多用组合少用继承 4

1.3.4 “开-闭”原则 4

1.4 设计模式概述 4

1.4.1 什么是设计模式 4

1.4.2 为什么需要设计模式 5

1.4.3 如何正确应用设计模式 5

1.5 设计模式的分类 5

1.5.1 创建型模式 6

1.5.2 结构型模式 6

1.5.3 行为型模式 6

1.6 学会归纳和总结 7

第一部分 创建型模式

2 曹操献刀:工厂方法模式 11

2.1 三国故事之曹操献刀 12

2.2 模式定义 13

2.3 故事中的模式分析 13

2.3.1 故事中的角色 13

2.3.2 抽象化分析方法 14

2.3.3 工厂方法模式的静态建模 15

2.4 故事的工厂方法模式实现 17

2.4.1 建立产品 17

2.4.2 建立工厂 19

2.4.3 故事情节的历史重现 21

2.4.4 用八星宝刀来考验模式 22

2.5 设计原则 25

2.6 使用场合 28

2.7 本章要点 29

3 肯德基:抽象工厂模式 31

3.1 发生在肯德基的故事 32

3.2 模式定义 33

3.3 故事中的模式分析 33

3.3.1 故事中的角色 33

3.3.2 抽象化分析 34

3.3.3 抽象工厂模式的静态建模 35

3.4 故事的抽象工厂模式实现 36

3.4.1 抽象食物的建立 36

3.4.2 建立不同食物的抽象基类 37

3.4.3 创建具体的食物 40

3.4.4 建立工厂 43

3.4.5 创建客户类 45

3.4.6 故事情节的展现 48

3.5 设计原则 49

3.6 使用场合 50

3.7 本章要点 53

4 手机套餐:建造者模式 54

4.1 手机套餐 55

4.2 模式定义 56

4.3 故事中的模式分析 56

4.3.1 角色分析 56

4.3.2 建造者模式的静态建模 57

4.4 模式实现 58

4.4.1 创建产品——手机套餐 59

4.4.2 建立抽象建造者 61

4.4.3 建立具体建造者 62

4.4.4 创建指导者 65

4.4.5 让客户订购手机套餐 66

4.4.6 如何简化建造者实现 68

4.5 设计原则 68

4.6 使用场合 70

4.7 本章要点 73

5 大学生初入社会:原型模式 75

5.1 大学生初入社会 76

5.2 模式定义 77

5.3 大学生故事的模式分析 78

5.3.1 故事情节分析 78

5.3.2 原型模式的静态建模 78

5.4 大学生故事的原型模式实现 80

5.4.1 原型的建立 81

5.4.2 创建生成原型对象的工厂 84

5.4.3 大学生初入社会的生活展现 86

5.5 设计原则 88

5.6 使用场合 95

5.7 本章要点 96

6 课堂上互动:单例模式 98

6.1 课堂上发生的故事 99

6.2 模式定义 100

6.3 模式分析 101

6.4 模式实现 102

6.4.1 实现一:使用同步线程安全创建单例对象 102

6.4.2 实现二:创建一个类全局对象实例作为单例对象 106

6.4.3 提高:多例模式实现 107

6.5 设计原则 112

6.6 使用场合 112

6.7 本章要点 114

第二部分 结构型模式

7 电源转换:适配器模式 117

7.1 生活中的适配器 118

7.2 模式定义 118

7.3 模式分析 119

7.3.1 适配器中的角色 119

7.3.2 静态建模 119

7.4 模式实现 120

7.4.1 抽象电源建立 121

7.4.2 创建220V电源 122

7.4.3 创建12V电源 123

7.4.4 测试220V电源和12V电源 125

7.4.5 对象适配器实现 126

7.4.6 类适配器模式实现 129

7.5 设计原则 132

7.6 使用场合 133

7.7 本章要点 135

8 开关与电灯:桥接模式 137

8.1 开关与电灯 138

8.2 模式定义 139

8.3 一般化分析 139

8.4 一般化实现 140

8.4.1 建立抽象开关 141

8.4.2 电灯实现 142

8.4.3 客户端测试 145

8.4.4 对于扩展功能的思考 146

8.5 桥接模式分析方法 147

8.6 开关与电灯的桥接模式实现 147

8.6.1 创建电灯接口 147

8.6.2 创建开关 148

8.6.3 电灯实现 151

8.6.4 客户端测试 153

8.7 设计原则 155

8.8 使用场合 156

8.9 本章要点 157

9 公司层级结构:组合模式 159

9.1 公司层级结构 160

9.2 模式定义 160

9.3 一般化分析 161

9.4 一般化实现 162

9.4.1 创建普通员工 162

9.4.2 创建管理者 164

9.4.3 客户端测试 168

9.4.4 系统结构的思考 171

9.5 组合模式分析方法 171

9.6 公司结构的组合模式实现 172

9.6.1 建立员工抽象 172

9.6.2 创建管理者 175

9.6.3 创建普通员工 177

9.6.4 客户端测试 179

9.7 设计原则 182

9.8 使用场合 183

9.9 本章要点 184

10 染色馒头:装饰者模式 186

10.1 染色馒头事件 187

10.2 模式定义 188

10.3 一般化分析 188

10.4 一般化实现 189

10.4.1 创建馒头接口 189

10.4.2 正常馒头 190

10.4.3 染色馒头 193

10.4.4 甜馒头 195

10.4.5 如何生产甜玉米馒头 199

10.5 装饰者模式分析方法 199

10.6 染色馒头的装饰者模式实现 200

10.6.1 创建抽象装饰者 200

10.6.2 创建装饰者 202

10.6.3 生产甜玉米馒头 204

10.7 设计原则 206

10.8 使用场合 207

10.9 本章要点 209

11 美食天下:外观模式 211

11.1 美食天下 212

11.2 模式定义 213

11.3 一般化分析 214

11.4 一般化实现 214

11.4.1 创建糖醋排骨接口 214

11.4.2 糖醋排骨实现 215

11.4.3 客户端测试 216

11.5 外观模式分析方法 218

11.5.1 让厨师为我们做菜 218

11.5.2 外观模式的静态建模 218

11.6 糖醋排骨的外观模式实现 219

11.6.1 建立外观门面 219

11.6.2 客户端测试 221

11.7 设计原则 222

11.8 使用场合 224

11.9 本章要点 227

12 五子棋游戏:享元模式 229

12.1 五子棋游戏 230

12.2 模式定义 231

12.3 模式分析 231

12.3.1 五子棋游戏分析 231

12.3.2 静态建模 232

12.4 模式实现 233

12.4.1 创建抽象棋子 233

12.4.2 棋子实现 234

12.4.3 创建棋子工厂 234

12.4.4 客户端测试 236

12.4.5 如何实现棋子的位置 238

12.4.6 测试棋子的外蕴状态 242

12.5 设计原则 244

12.6 使用场合 245

12.7 本章要点 247

13 红酒经销:代理模式 249

13.1 红酒代理商 250

13.2 模式定义 250

13.3 模式分析 251

13.3.1 消费者购买行为分析 251

13.3.2 静态建模 252

13.4 模式实现 252

13.4.1 创建红酒生产厂商 253

13.4.2 到红酒工厂购买红酒 254

13.4.3 创建红酒代理商 255

13.4.4 到红酒代理商处购买红酒 257

13.5 设计原则 258

13.6 使用场合 259

13.7 本章要点 265

第三部分 行为型模式

14 学生生病了:责任链模式 269

14.1 学生生病了 270

14.2 模式定义 271

14.3 普通抽象化分析 271

14.3.1 学生请假流程分析 271

14.3.2 抽象化静态建模 272

14.4 普通抽象化实现 273

14.4.1 学生请假实现 273

14.4.2 创建抽象请假消息处理者 275

14.4.3 请假处理者具体实现 277

14.4.4 客户端测试 279

14.4.5 如何面对变化 282

14.4.6 使用外观封装变化部分 283

14.5 责任链模式分析方法 288

14.5.1 如何实现消息传递 288

14.5.2 责任链模式静态建模 288

14.6 请假流程的责任链模式实现 289

14.6.1 抽象化修改 289

14.6.2 完善具体消息处理者 291

14.6.3 在外观中设置消息处理责任链 292

14.6.4 客户端测试 296

14.7 设计原则 296

14.8 使用场合 297

14.9 本章要点 299

15 邮局:命令模式 301

15.1 生活中的邮局 302

15.2 模式定义 303

15.3 模式分析 303

15.3.1 邮局例子分析 303

15.3.2 静态建模 303

15.4 模式实现 304

15.4.1 创建消息接收者 305

15.4.2 创建中间角色邮局 305

15.4.3 创建消息发送者 307

15.4.4 让邮局开始工作 308

15.4.5 优化我们的设计 310

15.5 设计原则 312

15.6 使用场合 313

15.7 本章要点 316

16 创建自己的语言:解释器模式 318

16.1 创建自己的语言解释器 319

16.2 模式定义 320

16.3 模式分析 320

16.3.1 “myida”语言分析 320

16.3.2 “myida”语言解释器原理 321

16.4 模式实现 323

16.4.1 创建上下文环境 323

16.4.2 创建解析表达式 326

16.4.3 让“myida”语言解释器开始工作 336

16.5 设计原则 338

16.6 使用场合 339

16.7 本章要点 341

17 循环遍历:迭代器模式 343

17.1 让迭代器代替for循环 344

17.2 模式定义 345

17.3 模式分析 345

17.3.1 如何遍历集合对象 345

17.3.2 迭代器模式静态建模 346

17.4 模式实现 347

17.4.1 人员信息实现 348

17.4.2 人员集合实现 349

17.4.3 迭代器实现 352

17.4.4 让迭代器遍历集合对象 354

17.4.5 迭代器如何面对变化 357

17.4.6 客户端发生哪些变化 360

17.5 设计原则 362

17.6 使用场合 362

17.7 本章要点 364

18 多人聊天室:中介者模式 366

18.1 多人聊天室 367

18.2 模式定义 368

18.3 模式分析 368

18.3.1 多人聊天室结构分析 368

18.3.2 静态建模 369

18.4 模式实现 370

18.4.1 创建用户接口 370

18.4.2 创建中介者 371

18.4.3 创建用户 373

18.4.4 运行多人聊天室 377

18.5 设计原则 380

18.6 使用场合 380

18.7 本章要点 382

19 过关类游戏:备忘录模式 384

19.1 过关类游戏 385

19.2 模式定义 385

19.3 模式分析 386

19.3.1 备忘录模式特点 386

19.3.2 备忘录模式静态建模 386

19.4 模式实现 387

19.4.1 白箱备忘录模式实现 388

19.4.2 黑箱备忘录模式实现 396

19.5 设计原则 404

19.6 使用场合 405

19.7 本章要点 407

20 高温预警:观察者模式 409

20.1 高温预警系统 410

20.2 模式定义 411

20.3 模式分析 411

20.3.1 高温预警过程分析 411

20.3.2 静态建模 411

20.4 模式实现 412

20.4.1 创建抽象角色 413

20.4.2 具体主题实现 415

20.4.3 具体观察者实现 419

20.4.4 让系统开始运行 421

20.5 设计原则 423

20.6 使用场合 423

20.7 本章要点 426

21 文档编辑模式切换:状态模式 428

21.1 文档编辑器中的模式切换 429

21.2 模式定义 430

21.3 模式分析 430

21.4 模式实现 431

21.4.1 创建空白的上下文环境 431

21.4.2 创建状态接口 431

21.4.3 完善上下文内容 433

21.4.4 创建具体状态 434

21.4.5 客户端测试 437

21.5 设计原则 440

21.6 使用场合 440

21.7 本章要点 442

22 商场促销:策略模式 443

22.1 商场促销商品 444

22.2 模式定义 445

22.3 模式分析 445

22.3.1 商品促销中的策略分析 445

22.3.2 策略模式静态建模 446

22.4 模式实现 446

22.4.1 创建策略接口 447

22.4.2 创建具体策略 448

22.4.3 创建上下文环境 450

22.4.4 消费者购物消费 451

22.4.5 策略模式与条件判断的比较 454

22.5 设计原则 456

22.6 使用场合 456

22.7 本章要点 459

23 生活行为:模板方法模式 461

23.1 每日的生活行为 462

23.2 模式定义 463

23.3 模式分析 463

23.3.1 生活行为分析 463

23.3.2 静态建模 464

23.4 模式实现 465

23.4.1 建立算法骨架 465

23.4.2 创建具体实现 467

23.4.3 客户端测试 469

23.5 设计原则 471

23.6 使用场合 472

23.7 本章要点 475

24 公司层级结构:访问者模式 477

24.1 公司层级结构 478

24.2 模式定义 479

24.3 模式分析 479

24.3.1 组合模式回顾 479

24.3.2 访问者模式分析 480

24.3.3 访问者模式静态建模 481

24.4 模式实现 483

24.4.1 员工实现 483

24.4.2 访问者实现 488

24.4.3 让员工接收访问者 490

24.4.4 客户端测试 491

24.4.5 扩展的思考 494

24.5 设计原则 498

24.6 使用场合 499

24.7 本章要点 502

25 设计模式总结 504

25.1 为什么学习设计模式 505

25.1.1 让工作变得轻松 505

25.1.2 让程序变得优雅 507

25.1.3 要学会设计原则 507

25.2 设计模式六大原则 509

25.2.1 “开-闭”原则(OCP) 509

25.2.2 单一职责原则(SRP) 519

25.2.3 依赖倒置原则(DIP) 527

25.2.4 接口隔离原则(ISP) 536

25.2.5 里氏替换原则(LSP) 543

25.2.6 迪米特法则(LoD) 544

25.3 勤于思考,善于总结 553

25.3.1 专心、用心、信心 553

25.3.2 做一个有思想的人 554

25.4 实践出真知 554

26 MVC设计实践 556

26.1 让你的思维活跃起来 557

26.2 如何设计MVC架构 557

26.3 第一个MVC框架——Joker MVC 558

26.3.1 环境介绍 558

26.3.2 MVC起航 558

26.3.3 Joker MVC架构分析 563

26.3.4 Joker MVC架构实现 566

26.3.5 发布joker-1.0部署测试 599