您的位置:首页 > 编程语言 > Java开发

深入浅出设计模式(C#/Java版)

2008-03-23 21:13 344 查看
深入浅出设计模式(C#/Java版)

作者:莫勇腾
丛书名:
出版社:清华大学出版社
ISBN:9787302135647
出版日期:2006年09月
开本:异16
页码:336
版次:1-1

内容简介

本书是一本通俗易懂的设计模式入门指导图书。.

作者用C#和Java两种语言,借助现实生活范例和图片演示,全面阐释GRASP及GoF 23种设计模式的概念及其编程应用,帮助你领悟设计模式的思想及精华,并将其融会贯通、灵活应用到自己的开发过程中。

全书用两章篇幅对设计模式和GRASP作了基本介绍,用三章的篇幅全面展开对23种设计模式的讲解:对于每一种模式,先给出定义,接着通过类比方式用一个现实世界中的例子说明模式的应用,然后分别以C#和Java代码例述模式的架构实现。最后一章给出了两个设计模式综合案例,为读者实践设计模式提供了很好的学习环境。附录部分精心安排了自测题及答案,供读者练习并检验学习效果。..

本书适合程序开发人员阅读,尤其适合作为大学计算机专业高年级学生和研究生的教学参考书。...

目录

第1章 基本概念 1.
1.1 什么是设计模式 2
1.2 设计模式的作用 3
1.3 GRASP模式的分类 4
1.4 GoF设计模式的分类 4
1.5 模式的学习阶段 6
第2章 负责任地设计对象——GRASP 9
2.1 Information Expert(信息专家) 11
2.2 Creator(创造者) 13
2.3 Low Coupling(低耦合) 14
2.4 High Cohesion(高内聚) 15
2.5 Controller(控制器) 17
2.6 Polymorphism(多态) 18
2.7 Pure Fabrication(纯虚构) 19
2.8 Indirection(间接) 20
2.9 Protected Variations(受保护变化) 21
第3章 GoF-Creational Design Patterns创建型设计模式 23
3.1 Simple Factory Pattern(简单工厂模式) 24
3.1.1 定义 24
3.1.2 现实例子——国旗生产厂 26
3.1.3 C#实例1——电子付款系统 26
3.1.4 C#实例2——学校登录系统 29
3.1.5 Java实例——手机简单工厂 32
3.1.6 优势和缺陷 34
3.1.7 应用情景 34
3.2 Factory Method Pattern(工厂方法模式) 35
3.2.1 定义 35
3.2.2 现实例子——兵工厂 36
3.2.3 C#实例——多文档系统 37
3.2.4 Java实例——扩展了的手机工厂 41
3.2.5 优势和缺陷 44
3.2.6 应用情景 44
3.3 Abstract Factory Pattern(抽象工厂模式) 45
3.3.1 定义 45
3.3.2 现实例子——扩展了的兵工厂 48
3.3.3 C#实例——大陆生态系统 49
3.3.4 Java实例——电脑产品 52
3.3.5 优势和缺陷 57
3.3.6 应用情景 57
3.4 Builder Pattern(建造者模式) 58
3.4.1 定义 58
3.4.2 现实例子——快餐店 60
3.4.3 C#实例——车间造车 61
3.4.4 Java实例——建造房屋 65
3.4.5 优势和缺陷 69
3.4.6 应用情景 70
3.5 Prototype Pattern(原型模式) 70
3.5.1 定义 70
3.5.2 现实中的拷贝-粘贴 71
3.5.3 C#实例——颜色管理器 72
3.5.4 Java实例——简单ToolBar 74
3.5.5 Shallow Copy与Deep Copy 76
3.5.6 优势和缺陷 82
3.5.7 应用情景 82
3.6 Singleton Pattern(单例模式) 82
3.6.1 定义 82
3.6.2 现实中的单例——Windows Task Manager 83
3.6.3 C#实例——负载均衡控制器 84
3.6.4 Java实例——系统日志 86
3.6.5 Double Check Locking(双检锁) 89
3.6.6 优势和缺陷 93
3.6.7 应用情景 93
第4章 GoF-Structural Design Patterns结构型设计模式 95
4.1 Adapter Pattern(适配器模式) 96
4.1.1 定义 96
4.1.2 现实中的实例——电脑电源适配器 97
4.1.3 C#实例——化学数据银行 98
4.1.4 Java实例——清洁系统 102
4.1.5 优势和缺陷 104
4.1.6 应用情景 104
4.2 Bridge Pattern(桥接模式) 104
4.2.1 定义 104
4.2.2 现实中的实例——男人的约会 106
4.2.3 C#实例——商业对象与数据对象 107
4.2.4 Java实例——不同系统的图像处理 112
4.2.5 优势和缺陷 114
4.2.6 应用情景 115
4.3 Composite Pattern(组合模式) 115
4.3.1 定义 115
4.3.2 组合模式的现实应用——资源管理器 117
4.3.3 C#实例——图形树状对象结构 118
4.3.4 Java实例——文档格式化 121
4.3.5 优势和缺陷 124
4.3.6 应用情景 125
4.4 Decorator Pattern(装饰模式) 125
4.4.1 定义 125
4.4.2 现实中的装饰模式——相架 126
4.4.3 C#实例——图书馆中的项目 127
4.4.4 Java实例——自定义JButton 131
4.4.5 优势和缺陷 133
4.4.6 应用情景 134
4.5 Facade Pattern(外观模式) 134
4.5.1 定义 134
4.5.2 现实中的实例——顾客服务员 135
4.5.3 C#实例——抵押申请审核 136
4.5.4 Java实例——冲茶 139
4.5.5 优势和缺陷 143
4.5.6 应用情景 143
4.6 Flyweight Pattern(轻量级模式) 144..
4.6.1 定义 144
4.6.2 实例——中游的四国军棋 146
4.6.3 C#实例——文档编辑器 147
4.6.4 Java实例——装载图像 151
4.6.5 优势和缺陷 154
4.6.6 应用情景 154
4.7 Proxy Pattern(代理模式) 154
4.7.1 定义 154
4.7.2 几个现实中的实例 156
4.7.3 C#实例——数学代理 158
4.7.4 Java实例——Socket回声 160
4.7.5 优势和缺陷 165
4.7.6 应用情景 165
第5章 GoF-Behavioral Design Patterns行为型设计模式 167
5.1 Chain of Responsibility(责任链模式) 168
5.1.1 定义 168
5.1.2 现实中的实例——军情的传递 169
5.1.3 C#实例——采购分级审批 170
5.1.4 Java实例——智能大厦安全系统 174
5.1.5 优势和缺陷 178
5.1.6 应用情景 178
5.2 Command Pattern(命令模式) 179
5.2.1 定义 179
5.2.2 现实中的实例——餐馆订菜 180
5.2.3 C#实例——简单计算器 181
5.2.4 Java实例——总开关 185
5.2.5 优势和缺陷 189
5.2.6 应用情景 189
5.3 Interpreter Pattern(解释器模式) 190
5.3.1 定义 190
5.3.2 现实示例——音乐符号 192
5.3.3 C#实例——中国金钱大写转换 192
5.3.4 Java实例——自定义程序解释器 197
5.3.5 优势和缺陷 204
5.3.6 应用情景 205
5.4 Iterator Pattern(迭代器模式) 205
5.4.1 定义 205
5.4.2 现实示例——电视节目选择器 206
5.4.3 C#实例——遍历例子 207
5.4.4 Java实例——两个迭代器 211
5.4.5 优势和缺陷 213
5.4.6 应用情景 214
5.5 Mediator Pattern(中介者模式) 214
5.5.1 定义 214
5.5.2 现实示例——机场控制塔 215
5.5.3 C#实例——聊天室 216
5.5.4 Java实例——多线程通信 220
5.5.5 优势和缺陷 223
5.5.6 应用情景 223
5.6 Memento Pattern(备忘录模式) 223
5.6.1 定义 223
5.6.2 现实示例——音响均衡器 226
5.6.3 C#实例——销售目标 226
5.6.4 Java实例——多次Undo(取消)操作 231
5.6.5 优势和缺陷 236
5.6.6 应用情景 236
5.7 Observer Pattern(观察者模式) 236
5.7.1 定义 236
5.7.2 现实例子——拉登现身了 238
5.7.3 C#实例——猫和老鼠 238
5.7.4 C#实例——股票变化 241
5.7.5 Java实例——监控系统 245
5.7.6 优势和缺陷 248
5.7.7 应用情景 248
5.8 State Pattern(状态模式) 248
5.8.1 定义 248
5.8.2 现实例子——心情好坏 250
5.8.3 C#实例——账户分类 250
5.8.4 Java实例——汽车的变速档 258
5.8.5 优势和缺陷 261
5.8.6 应用情景 261
5.9 Strategy Pattern(策略模式) 261
5.9.1 定义 261
5.9.2 现实例子——去机场的策略 263
5.9.3 C#实例——排序方法 263
5.9.4 Java实例——多格式输出 266
5.9.5 优势和缺陷 272
5.9.6 应用情景 272
5.10 Template Method Pattern(模板方法模式) 272
5.10.1 定义 272
5.10.2 现实例子——厨师烹调 274
5.10.3 C#实例——数据库连接模板 274
5.10.4 Java实例——冒泡排序模板 277
5.10.5 优势和缺陷 280
5.10.6 应用情景 280
5.11 Visitor Pattern(访问者模式) 280
5.11.1 定义 280
5.11.2 现实例子——收银员收银计费 282
5.11.3 C#实例——人事评估 283
5.11.4 Java实例——维修工程师检查车辆 287
5.11.5 优势和缺陷 291
5.11.6 应用情景 291
第6章 模式的综合应用 293
6.1 Java实例——扩展的日志记录器 294
6.2 C#实例——存储分析器 298
6.3 用模式生成程序架构 316
附录1 自测题 321
附录2 自测题答案 331
参考文献 337...

作译者

作者莫勇腾10年的软件系统管理. 咨询. 设计开发. 组织与实施工作经验, 擅长包括电子商务. ERP, 工业控制工程及其它软件工程领域, 是实战经验丰厚的一线杰出开发者. 目前于广东汕头大学网络中心任项目经理. ...

前言

进入计算机时代以来, 程序设计方法和编程过程不断发展演进, 从结构化编程到模块化编程, 然后发展到面向对象编程. 组件化编程. 现阶段, 面向对象编程方法占据程序设计的主流, 成为最常用且最重要的程序设计方法. .
设计模式是资深程序员们总结出来的一种可重用的. 针对面向对象软件设计的解决方案, 所有结构良好的面向对象软件体系结构中都包含了许多设计模式. 使用了模式的程序, 其简洁和易于理解的程度远远超过了未使用模式的程序, 所以设计模式日益成为编程人员追求的技术热点, 越来越多的人愿意花大量的时间学习它.
本书不是一本单纯地笼统介绍设计模式的书, 它从概念定义入手, 以现实生活范例, 结合大量代码示例介绍了面向对象设计的GRASP(通用责任分配软件模式)原则及GoF的23种设计模式, 教导读者如何将其灵活应用到自己的开发过程中. 最后一章提供了两个设计模式综合应用案例, 为读者进一步领悟设计模式的精妙并实践模式提供了很好的平台. 在附录部分提供了一组自测习题及答案, 以巩固和加深读者对模式的理解.
本着“学以致用”的编写原则, 书中强调如何把模式运用得恰到好处, 使读者从对设计模式的一无所知, 到理解的混沌, 转而进入一个明朗开阔的编程领域新天地.
本 书 特 点
(1)本书从基础开始引导读者进行正确的对象设计. 很多人都学过GoF设计模式, 但GRASP才是模式设计的基础. 目前很多书都缺乏对GRASP基础原则的介绍, 就直接描述GoF设计模式, 使得读者很难理解和接受. ..
(2)本书让读者以最少的学习时间获得软件设计的最先进知识. 由于设计模式比较抽象, 难以理解, 故本书穿插大量图片, 以生动现实的例子来说明模式, 最大程度地降低了读者的学习曲线. 正如阅读好的代码可以获取大量的编程技巧一样, 阅读以好的模式编写的例子可以参悟大量的分析和设计技巧及经验. 你会发觉, 本书讲到的很多例子就是你以前遇到过的, 将来很多时候, 书中的例子还可以直接应用到你的项目中, 因为它们很实用, 很贴近实际需求.
(3)本书中所有设计模式的应用示例均以两种编程语言实现:Java和C#. 读者在通过示例代码加深对模式的理解之余, 还可以从这些例子中体会Java与C#的区别, 以及各自的长短之处, 从而进一步掌握C#和Java这两门主流编程语言.
目 标 读 者
本书面向那些有一定编程经验, 但渴望在程序开发过程中不断提升编程质量的程序开发人员, 对于即将毕业走入社会从事高质量高强度程序开发工作的计算机专业学生, 本书能够带领你迅速参透设计模式的精妙, 运用设计模式组织程序架构, 进而写出高水平高质量的程序. 阅读本书时, 你掌握的编程语言可能不是Java, 也不是C#, 但模式是独立于开发语言的, 理解了设计模式, 掌握了设计模式的应用方法, 你就能正确科学地组织分配程序中的各个类, 建立架构良好的应用程序. 所以, 本书适合于任何编程语言的开发人员.
由于作者水平有限, 书中难免有不足之处, 欢迎各位读者不吝指正. 读者可以发送邮件到techmio@qq.com与作者取得联系.
注意:本书所有示例的源代码, 都可以在http://w
ww.khp.com.cn网站的“下载服务”专区或本书子页面中找到, 欢迎读者访问下载. ...
编 者
2006年7月21日于汕头大学
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: