新書推薦:
《
古典的回響:溪客舊廬藏明清文人繪畫
》
售價:NT$
1990.0
《
掌故家的心事
》
售價:NT$
390.0
《
孤独传:一种现代情感的历史
》
售價:NT$
390.0
《
家、金钱和孩子
》
售價:NT$
295.0
《
量价关系——透视股票涨跌脉络
》
售價:NT$
340.0
《
二十四节气生活美学
》
售價:NT$
340.0
《
西班牙内战:秩序崩溃与激荡的世界格局:1936-1939
》
售價:NT$
990.0
《
基于鲲鹏的分布式图分析算法实战
》
售價:NT$
495.0
|
編輯推薦: |
本书可作为一线软件开发人员、高等院校计算机及软件等相关专业师生、IT培训机构讲师和学员、设计模式研究人员和模式爱好者的参考用书和自学读物。
|
內容簡介: |
本书分为4个部分,共26章:第1部分(第1章-第2章)为基础知识,包括设计模式概述、UML类图和面向对象设计原则等内容;第2部分(第3章-第8章)为创建的艺术,包括6种常用的创建型设计模式;第3部分(第9章-第15章)为组合的艺术,包括7种常用的结构型设计模式;第4部分(第16章-第26章)为交互的艺术,包括11种常用的行为型设计模式。 本书可作为一线软件开发人员、高等院校计算机及软件等相关专业师生、IT培训机构讲师和学员、设计模式研究人员和模式爱好者的参考用书和自学读物。
|
關於作者: |
刘伟,中南大学计算机应用技术博士,高级工程师,中国计算机学会会员,美国计算机学会会员,国家认证系统分析师,首批国家认证系统架构设计师,CSDN认证专家及知名博主。具有十多年软件开发、项目管理及教育培训经验,为多家国内外知名企业提供IT咨询和培训服务,已出版《设计模式》、《设计模式实训教程》、《C#设计模式》、《Java设计模式》、《设计模式实验及习题解析》等多部著作。
|
目錄:
|
配套资源下载
第1部分 基 础 知 识
第1章 从招式与内功谈起设计模式概述
1.1 设计模式从何而来
1.2 设计模式是什么
1.3 设计模式有什么用
1.4 个人观点
第2章 预备知识UML类图与面向对象设计原则
2.1 UML概述
2.2 类与类的UML图示
2.3 类之间的关系
2.4 面向对象设计原则概述
2.5 单一职责原则
2.6 开闭原则
2.7 里氏代换原则
2.8 依赖倒转原则
2.9 接口隔离原则
2.1 0合成复用原则
2.1 1迪米特法则
第2部分 创建的艺术创建型模式
第3章 确保对象的唯一性单例模式
3.1 单例模式的动机
3.2 单例模式概述
3.3 负载均衡器的设计
3.4 饿汉式单例与懒汉式单例的讨论
3.5 一种更好的单例实现方法
3.6 单例模式总结
第4章 集中式工厂的实现简单工厂模式
4.1 图表库的设计
4.2 简单工厂模式概述
4.3 完整解决方案
4.4 方案的改进
4.5 创建对象与使用对象
4.6 简单工厂模式的简化
4.7 简单工厂模式总结
第5章 多态工厂的实现工厂方法模式
5.1 日志记录器的设计
5.2 工厂方法模式概述
5.3 完整解决方案
5.4 反射与配置文件
5.5 重载的工厂方法
5.6 工厂方法的隐藏
5.7 工厂方法模式总结
第6章 产品族的创建抽象工厂模式
6.1 界面皮肤库的初始设计
6.2 产品等级结构与产品族
6.3 抽象工厂模式概述
6.4 完整解决方案
6.5 开闭原则的倾斜性
6.6 抽象工厂模式总结
第7章 对象的克隆原型模式
7.1 大同小异的工作周报
7.2 原型模式概述
7.3 完整解决方案
7.4 带附件的周报
7.5 原型管理器的引入和实现
7.6 原型模式总结
第8章 复杂对象的组装与创建建造者模式
8.1 游戏角色设计
8.2 建造者模式概述
8.3 完整解决方案
8.4 关于Director的进一步讨论
8.5 建造者模式总结
第3部分 组合的艺术结构型模式
第9章 不兼容结构的协调适配器模式
9.1 没有源码的算法库
9.2 适配器模式概述
9.3 完整解决方案
9.4 类适配器模式
9.5 双向适配器模式
9.6 缺省适配器模式
9.7 适配器模式总结
第10章 处理多维度变化桥接模式
10.1 跨平台图像浏览系统
10.2 桥接模式概述
10.3 完整解决方案
10.4 适配器模式与桥接模式的联用
10.5 桥接模式总结
第11章 树形结构的处理组合模式
11.1 设计杀毒软件的框架结构
11.2 组合模式概述
11.3 完整解决方案
11.4 透明组合模式与安全组合模式
11.5 Sunny公司组织结构
11.6 组合模式总结
第12章 扩展系统功能装饰模式
12.1 图形界面构件库的设计
12.2 装饰模式概述
12.3 完整解决方案
12.4 透明装饰模式与半透明装饰模式
12.5 装饰模式注意事项
12.6 装饰模式总结
第13章 提供统一入口外观模式
13.1 文件加密模块的设计
13.2 外观模式概述
13.3 完整解决方案
13.4 抽象外观类的引入
13.5 外观角色设计补充说明
13.6 外观模式总结
第14章 实现对象的复用享元模式
14.1 围棋棋子的设计
14.2 享元模式概述
14.3 完整解决方案
14.4 带外部状态的解决方案
14.5 单纯享元模式和复合享元模式
14.6 关于享元模式的几点补充
14.7 享元模式总结
第15章 对象的间接访问代理模式
15.1 收费商务信息查询系统的设计
15.2 代理模式概述
15.3 完整解决方案
15.4 远程代理
15.5 虚拟代理
15.6 Java动态代理
15.7 代理模式总结
第4部分 交互的艺术行为型模式
第16章 请求的链式处理职责链模式
16.1 采购单的分级审批
16.2 职责链模式概述
16.3 完整解决方案
16.4 纯与不纯的职责链模式
16.5 职责链模式总结
第17章 请求发送者与接收者解耦命令模式
17.1 自定义功能键
17.2 命令模式概述
17.3 完整解决方案
17.4 命令队列的实现
17.5 撤销操作的实现
17.6 请求日志
17.7 宏命令
17.8 命令模式总结
第18章 自定义语言的实现解释器模式
18.1 机器人控制程序
18.2 文法规则和抽象语法树
18.3 解释器模式概述
18.4 完整解决方案
18.5 再谈Context的作用
18.6 解释器模式总结
第19章 遍历聚合对象中的元素迭代器模式
19.1 销售管理系统中数据的遍历
19.2 迭代器模式概述
19.3 完整解决方案
19.4 使用内部类实现迭代器
19.5 JDK内置迭代器
19.6 迭代器模式总结
第20章 协调多个对象之间的交互中介者模式
20.1 客户信息管理窗口的初始设计
20.2 中介者模式概述
20.3 完整解决方案
20.4 中介者与同事类的扩展
20.5 中介者模式总结
第21章 撤销功能的实现备忘录模式
21.1 可悔棋的中国象棋
21.2 备忘录模式概述
21.3 完整解决方案
21.4 实现多次撤销
21.5 再谈备忘录的封装
21.6 备忘录模式总结
第22章 对象间的联动观察者模式
22.1 多人联机对战游戏的设计
22.2 观察者模式概述
22.3 完整解决方案
22.4 JDK对观察者模式的支持
22.5 观察者模式与Java事件处理
22.6 观察者模式与MVC
22.7 观察者模式总结
第23章 对象状态及其转换状态模式
23.1 银行系统中的账户类设计
23.2 状态模式概述
23.3 完整解决方案
23.4 共享状态
23.5 使用环境类实现状态转换
23.6 状态模式总结
第24章 算法的封装与切换策略模式
24.1 电影票打折方案
24.2 策略模式概述
24.3 完整解决方案
24.4 策略模式的两个典型应用
24.5 策略模式总结
第25章 定义算法的框架模板方法模式
25.1 银行利息计算模块
25.2 模板方法模式概述
25.3 完整解决方案
25.4 钩子方法的使用
25.5 模板方法模式总结
第26章 操作复杂对象结构访问者模式
26.1 OA系统中员工数据汇总
26.2 访问者模式概述
26.3 完整解决方案
26.4 访问者模式与组合模式联用
26.5 访问者模式总结
附录A 常用设计模式的定义及结构图
A.1 创建型设计模式
A.2 结构型设计模式
A.3 行为型设计模式
参考文献
|
內容試閱:
|
前言
在过去多年的软件开发和教学推广工作中,我时常能够听到这样的声音:
抽象类和接口到底有什么用?
继承不好吗?为什么有时候不用它来实现功能复用?
能不能在下次增加功能时不要修改源代码?每次都改,太麻烦了。
有没有一种方法能够减少类的个数?这么多类,太复杂了。
面向对象软件的可重用性不是很好吗?为什么我还是在不断编写相同的代码?
我学过设计模式,也看了好几本书,但实际开发时我还是不知道怎么运用这些模式?
你是否也曾有过上述疑问或者发出过类似的感慨?如果有,那么本书将是你明智的选择。本书将结合大量项目实例来逐个讲解设计模式,讲述如何通过设计模式来解决上述问题,让读者能够快速提升自己的开发功力,真正理解和掌握每个设计模式,在软件开发的内功修炼之道上迈出坚实的一步。
写作目的
设计面向对象软件比较困难,而设计可复用的面向对象软件就更加困难。
GoF 1995
软件开发是一门技术,更是一门艺术!
随着面向对象技术的发展和广泛应用,设计模式在软件开发和设计中的重要性不言而喻。作为软件开发人员,尤其是面向对象软件开发人员,设计模式已成为其内功修炼的重要组成部分之一。无论是面向对象的初学者还是具有一定经验的开发人员,都可以通过对设计模式的学习和使用来加深对面向对象思想的理解,开发出具有更好的可扩展性和复用性的软件。设计模式是前人经验的积累,它将让软件变得更像一个艺术品,而不是一堆难以维护和重用的代码。
作为一名从事模式使用和推广工作多年的教师兼开发人员,如何更好地将设计模式的思想和实践经验传递给他人一直是我在思考的一个问题,于是多年前我开始着手收集和整理所积累的一些与设计模式相关的项目实例和资源,经过无数个夜晚的挑灯夜战,终于完成了《设计模式的艺术:软件开发人员内功修炼之道》(2013年,清华大学出版社出版)一书的编写工作。本书对《设计模式的艺术:软件开发人员内功修炼之道》进行了修订,并增补了部分内容,使之表述更准确、结构更紧凑、内容更丰富,借此为我国软件事业的发展和面向对象技术的推广尽一点绵薄之力。
本书内容及结构
本书将为你解答如下软件设计和开发问题:
如何确保系统中一个类只能有一个实例?(第3章单例模式)
如何将对象的创建和对象的使用分离?(第4章简单工厂模式)
如何通过不同的工厂来创建不同类型的对象?(第5章工厂方法模式)
如何设计一个能够创建一系列产品对象的工厂?(第6章抽象工厂模式)
如何通过克隆来得到一个一模一样的对象?(第7章原型模式)
如何一步步创建一个包含多个组成部分的复杂对象?(第8章建造者模式)
如何在不修改现有系统的前提下重用没有源码的第三方类库?(第9章适配器模式)
如何避免在多层继承结构中类的个数出现爆炸式增长?(第10章桥接模式)
如何使用面向对象的方式来处理软件系统中的树形结构?(第11章组合模式)
如何不通过继承的方式来扩展类的功能?(第12章装饰模式)
如何为复杂子系统提供一个统一的入口?(第13章外观模式)
如何实现对象的多次复用以节省系统资源?(第14章享元模式)
如何提供一种间接访问机制来实现对象的远程访问或受限访问?(第15章代理模式)
如何让多个对象都有机会来处理同一个请求?(第16章职责链模式)
如何将请求的发送者和请求的接收者完全解耦?(第17章命令模式)
如何自定义一个简单的语言?(第18章解释器模式)
如何间接遍历一个聚合对象中的元素?(第19章迭代器模式)
如何协调多个对象之间复杂的相互调用?(第20章中介者模式)
如何在软件中实现撤销功能?(第21章备忘录模式)
如何实现对象之间一对多的联动?(第22章观察者模式)
如何设计和实现一个具有多个状态的对象?(第23章状态模式)
如何在不修改现有代码的前提下更换一种算法?(第24章策略模式)
如何为一个复杂算法的某些步骤提供多种实现方式?(第25章模板方法模式)
如何操作一个包含多种类型对象的复杂结构?(第26章访问者模式)
本书共分为四部分,共26章内容。
第1部分: 基础知识,包含第1章和第2章,主要介绍与设计模式相关的一些基础知识,包括设计模式概述、UML类图、7个面向对象设计原则等内容,为后续设计模式的学习奠定基础;
第2部分: 创建的艺术,包含第3章至第8章,介绍6种常用的创建型设计模式,分别是单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式;
第3部分: 组合的艺术,包含第9章至第15章,介绍7种常用的结构型设计模式,分别是适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式;
第4部分: 交互的艺术,包含第16章至第26章,介绍11种常用的行为型设计模式,分别是职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。
此外,在本书的附录部分给出了常用的24种设计模式的定义和结构图,供读者在学习和练习时参考。
本书将结合大量应用实例来分析和讲解每个设计模式,力求通过易于接受的方式来让读者学习和理解设计模式,让读者在真实项目实例的引导下学会选择和合理运用设计模式。每章的基本结构如下:
本书特色
本书不是教材,却有教材的严谨性;
本书不是科普书,却有科普书的通俗性;
本书没有故事情节,却也不失趣味性。
本书主要特点如下:
1 提供大量真实项目实例,针对每个设计模式至少提供了一个完整的实例,是一本基于实例驱动的设计模式实践指南,结合实例来学习设计模式,可以让读者学会在实际开发中运用设计模式,具体实例列表参见之后的实例目录。
2 内嵌了适量的思考题和练习题,所有练习题也都基于某个项目实例,让读者能够在学习的同时通过思考题和练习题来消化和进一步巩固所学知识。
3 提供相应的技术博客支持(CSDN博客,地址: http:blog.csdn.netLoveLion),为广大读者提供一个灵活的沟通和交流平台。
4 内容全面,语言通俗,讲解深入,难度适中,可满足不同层次读者的需求,每个实例都提供了完整的可执行代码和结构图,所有结构图(类图)均严格按照UML 2.X标准绘制,代码均在JDK 1.8环境下通过测试且运行无误。
目标读者
如果你是一位有一定开发经验的一线软件开发人员,想提升自己的软件设计与开发功力,希望设计并开发出可复用性和可维护性俱佳的面向对象软件,那么本书为你而写;
如果你是一位计算机或软件相关专业的教育工作者,想在教授设计或编程类课程的同时让学生掌握一些面向对象设计技巧并将其应用于项目实践,那么本书为你而写;
如果你是一名刚接触面向对象编程的初学者,想更好地理解面向对象思想并编写出高质量的程序代码,那么本书为你而写;
如果你是一位软件工程或者软件架构设计研究人员,正从事或者准备从事面向对象软件设计等相关研究工作,那么本书也为你而写。
无论你使用的编程语言是C、Java、C#、VB.NET、ObjectiveC,还是JavaScript、PHP、Delphi、Python等,我相信本书都会有你想要的内容。
本书适用于:
从没接触过设计模式,想用较短的时间来熟悉并掌握设计模式的读者;
学习过设计模式,有一定基础,但不知道如何在实际开发中运用设计模式的读者;
使用过设计模式,想对GoF设计模式全面学习的读者;
总之,本书可作为一线软件开发人员、高等院校计算机及软件等相关专业师生、IT培训机构讲师和学员、设计模式研究人员和模式爱好者的参考用书和自学读物。
感谢
感谢我的师长,没有你们多年的悉心教诲与耐心指导,就没有现在的我,我也会将你们的精神传承下去,为我国教育与软件事业的发展尽自己一份绵薄之力。
感谢我的家人在本书的写作过程中默默的支持与付出,感谢各位同事与好友在我写作过程中给予的宝贵意见和建议,正因为有你们,我的奋斗之路才会如此丰富多彩。
感谢参与本书初稿校对工作的学生,你们从学习者的角度提出了一些建议,有助于本书的充实和完善。
感谢CSDN技术博客中那些认识的、不认识的网友们对我工作的肯定,谢谢你们的支持与鼓励。
感谢所有帮助和支持过我的朋友,特别是那些听过我课的学生和企业学员,同时在本书的编写过程中我参考和引用了国内外很多书籍和网站的相关资料,个别实例的初始原型也来源于网络,由于涉及的网站和网页太多,无法一一列举,在此向有关作者一并予以感谢。
感谢武侠巨匠金庸老先生,那些武侠小说给予我太多写作灵感,同时书中不少实例中的人名也源于小说中那些经典的武侠人物。谨以此书缅怀金庸先生。
最后特别感谢清华大学出版社的编辑为本书出版所做出的努力,你们的专业和严格让我在写作过程中倍感压力,但也充满了激情与动力,因为我们的目标一致: 为读者送上最好的图书!
由于时间仓促、学识有限,虽经多次审阅与校稿,但书中不足和疏漏之处难免,恳请广大读者将意见和建议通过清华大学出版社反馈给我,力求精益求精,更趋完美。
刘伟2020年1月于湖南长沙
|
|