书籍作者:王健伟 | ISBN:9787302601982 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:2684 |
创建日期:2023-04-30 | 发布日期:2023-04-30 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
本书逐一详解24种常见的设计模式,并以一个实际的游戏案例贯穿全书,摆脱了以往单纯介绍设计模式的枯燥。在讲解过程中,一般会首先说明传统编码中将会面临的问题,面后随着需求的不断增加和变化重构代码,从而引出各种设计模式的实际运用,帮助读者理解该模式要解决的问题以及详细实现该设计模式的方法,使读者理解和明白在遇到什么样的问题时可以利用哪种设计模式来解决。
全书共22章,此外还包括附录A和附录B。其中,第1章是理论知识,包括对设计模式和软件开发思想的介绍以及具体编程环境搭建工作的说明:第2~22章逐一详解24个设计模式:附录A和附录B同样有极高的学习价值和参考价值,不可错过。
本书适合中高级C++开发者学习参考,同时配套有全部实例源代码、配套开发工具及更多学习资源。
王健伟,男,1976年9月生,网名狂想(KuangXiang),1995年毕业于哈尔滨工程大学计算机及应用专业,拥有20多年软件开发经验,参与开发过数十个实际项目,涉及网络通信、网络安全、网络游戏等领域,具备极其深厚的软件开发实战经验。曾参与创办深圳知名网络安全公司安络科技有限公司,是中国首套网络安全在线扫描评估系统项目负责人、全球同服独立游戏《冒险之路》制作人。
本书将逐一详解二十四个常见的设计模式。书中将摆脱以往枯燥的单纯介绍设计模式的讲解方法,以一个实际的游戏案例贯穿讲解。
亲爱的读者,如果你已经读完了笔者的《C++新经典》《C++新经典: 对象模型》,并希望将来能够驾驭更大型的C++项目,那么不要错过这本重要的C++进阶书籍。
书籍介绍
设计模式是程序员在长期的开发实践中总结出的一套提高开发效率的编程方法,是被反复使用的代码设计经验总结,是在特定问题发生时的可重用解决方案,体现着人们尝试解决某些问题时的智慧。使用设计模式的主要目的是在设计大型项目时,保证所设计的模块之间代码的灵活性和可复用性。
用C++语言讲述设计模式的书非常少,大部分作者使用Java语言,而且在讲解设计模式时所举的例子和实际工作中所面对的真实案例差别较大,读者学习后感觉实际运用有困难。
设计模式知识本身并不复杂,但讲清楚这门知识的难度非常大,设计模式主要应该讲明白两方面的知识:
(1) 某个设计模式对应的代码怎样编写;
(2) 该设计模式解决了什么样的问题。
只要把这两方面的知识讲明白,读者就会知道在什么场合下应该采用何种设计模式。
本书面对的是希望系统学习C++设计模式方面知识的中高级开发者,将逐一详解24个常见的设计模式。为摆脱以往枯燥的单纯介绍设计模式的讲解方法,书中内容以一个实际的游戏案例贯穿。当然,因为设计模式的应用场合复杂多变,无法在一个案例中覆盖所有设计模式,所以对于这种设计模式,笔者将单独举例进行讲解。在讲解过程中,一般会首先说明传统编码中将会遇到的问题,而后随着需求的不断增加和变化,代码需要进行重构,从而引出各种设计模式的实际运用,并穿插讲解面向对象程序设计的各个原则。
每个设计模式都会列举一到多个来自实际工作中的范例,帮助读者理解该模式要解决的问题以及详细实现该设计模式的方法,使读者理解和明白在遇到什么样的问题时可以利用哪种设计模式来解决。
书中的内容尽量化繁为简,不会把一些非常复杂难懂的采用设计模式的实战案例搬进来。实践证明,在设计模式中过多地介绍复杂的实战案例只是听起来不错,但因其固有的复杂性,会对学习者造成极大的理解负担,还会“喧宾夺主”,使得学习者既不能理解案例,也无法掌握设计模式。
阅读完本书并不是学习设计模式的结束,而是一个新的开始,读者应该尽可能多地阅读实际项目代码,运用设计模式不断思考和总结,并在实践中进一步提高自己对设计模式的运用能力。
需要的基础知识
本书定位为“C++进阶”书籍,需要读者对C++开发有比较好的基础(例如,学习单件模式时要求对多线程编程已经有比较好的掌握),尤其是对多态、虚函数的理解和使用必须做到明白无误,因为这两个概念在设计模式中体现得淋漓尽致。强烈建议读者在阅读本书之前先阅读笔者所著的《C++新经典: 对象模型》,该书对多态和虚函数的实现原理有非常详细的解释。《C++新经典: 对象模型》是一本值得珍藏的书,能够让读者对本书的学习如虎添翼。本书所涉及的范例代码不需要用到C++11新标准中的内容,所以不要求读者掌握C++11新标准。
书籍阅读进度
全书共22章,此外还包括附录A和附录B。第1章是理论知识,包括对设计模式和软件开发思想的介绍以及具体编程环境搭建工作的说明。理论知识读者可以进行阅读并在心目中有个大致印象,对于一些重点内容可以适当做标记以方便将来的复习,编程环境的搭建工作建议遵照书中第1章描述进行,以确保后续书中讲解的内容能够顺利演示。整个第1章的学习内容建议1周之内完成。从第2章开始一直到第22章,会详细讲解24个设计模式,每个设计模式的学习和实践(在实际计算机上运行通过书中的各个范例)所花费的时间建议不超过1周,这意味着大概需要24周的时间来学完24个模式。
附录A和附录B有极高的学习价值,读者千万不可以因为这些内容放在附录中而轻视,要以同样认真的态度学习,建议每周至少学习一节内容(例如,A.1算作一节),这两个附录大概需要额外的10周学完。
对于上班的读者,可以尽量将学习时间安排在晚上和周末。整本书大概需要245天的学习时间,再将时间稍微延后一些,能够在365天(一年)的时间之内学完,就是一种比较适当的学习速度。在学习过程中,一定要动起手来,书中每个地方的内容、代码,都要亲自实践来验证,并且都要保证验证成功,动手实践的步骤是往自己的大脑中深入镌刻真正知识的步骤,一旦缺少这个步骤,你的记忆就会不深,掌握的知识就会不牢。
运行环境
本书的范例全部在Windows操作系统下的Visual Studio 2019集成开发环境下调试通过。之所以选择这个平台环境,是因为它对开发者相当友好,开发和调试程序特别方便,尤其对初学者,极大降低了学习难度。
书中也详细阐述了在Windows操作系统下安装Visual Studio 2019的过程,由于对开发环境的版本没有太高要求,所以如果读者有其他低版本的Visual Studio也可以使用。对于在Linux下从事C/C++开发的读者,书中的范例基本上不做改动就可以跨操作系统平台运行。
资料获取
本书有完整的配套学习资料(源码),读者可以免费获取。获取方法如下:
(1) 请查找并关注“程序员速成”微信公众号。
(2) 在微信公众号中,输入“设计模式”4个字,就可以得到配套学习资料下载链接。
C++知识体系庞杂,而C++模板与泛型编程方面的知识又具有一定深度和难度,由于水平所限,虽然笔者非常尽心尽力,但书中错误在所难免,恳请各位读者发现错误后不吝指教。
作者2022年4月
第1章 设计模式与软件开发思想、编程环境介绍
1.1 设计模式概述
1.1.1 设计模式基本概念
1.1.2 设计模式中的抽象思维
1.1.3 学习设计模式普遍存在的问题
1.1.4 设计模式的缺点
1.1.5 设计模式在实际工作中的应用和学习方法
1.1.6 学习设计模式的态度、方法和本书的特点
1.2 软件开发思想、设计模式分类与讲解规划
1.2.1 大型项目的软件开发思想
1.2.2 设计模式分类及讲解规划
1.3 C++编程环境介绍
1.3.1 C++编程环境搭建说明
1.3.2 创建最基本的能运行的C++程序
1.3.3 Visual Studio中程序的调试方法
第2章 模板方法模式
2.1 一个具体实现范例的逐步重构
2.2 引入模板方法模式
2.3 模板方法模式的UML图
2.4 程序代码的进一步完善及应用联想
第3章 工厂模式、原型模式、建造者模式
3.1 工厂模式
3.1.1 简单工厂模式
3.1.2 工厂方法模式
3.1.3 抽象工厂模式
3.2 原型模式
3.2.1 通过工厂方法模式演变到原型模式
3.2.2 引入原型模式
3.3 建造者模式
3.3.1 一个具体实现范例的逐步重构
3.3.2 引入建造者模式
3.3.3 另一个建造者模式的范例
3.3.4 建造者模式的总结
第4章 策略模式
4.1 一个具体实现范例的逐步重构
4.2 依赖倒置原则
第5章 观察者模式
5.1 一个遍历问题导致的低效率范例
5.2 引入观察者模式
5.3 应用联想
第6章 装饰模式
6.1 问题的提出
6.2 引入装饰模式
6.3 另一个装饰模式的范例
第7章 单件模式
7.1 单件类的基本概念和实现
7.2 单件类在多线程中可能导致的问题
7.3 饿汉式与懒汉式
7.4 单件类对象内存释放问题
7.5 单件类定义、UML图及另外一种实现方法
第8章 外观模式
8.1 一个配置相关的范例
8.2 引入外观模式
8.3 另一个外观模式的范例
第9章 命令模式
9.1 通过一个范例引出命令模式代码编写方法
9.2 引入命令模式
9.3 命令模式用途研究
9.3.1 改造范例增加对象使用时的独立性
9.3.2 命令模式使用场景与特点总结
第10章 迭代器模式
10.1 容器和迭代器的简单范例
10.2 单一职责原则
10.2.1 单一职责原则的定义
10.2.2 内聚与耦合
10.3 迭代器模式的范例及现代C++中的迭代器
10.3.1 迭代器模式范例
10.3.2 现代C++中的迭代器
第11章 组合模式
11.1 一个基本的目录内容遍历范例
11.2 使用组合模式改造目录内容遍历范例
11.3 引入组合模式
11.4 透明组合模式与安全组合模式
11.5 其他使用组合模式的场景探讨
第12章 状态模式
12.1 一个基本的状态转换范例
12.2 引入状态模式
12.3 状态类的单件实现方式
第13章 享元模式
13.1 从一个典型的范例开始
13.2 引入享元模式
第14章 代理模式
14.1 基本概念和范例
14.2 引入代理模式
14.3 代理模式的应用场合探究
14.3.1 代理模式常用应用场景
14.3.2 缓存/缓冲代理范例
第15章 适配器模式
15.1 一个简单的范例
15.2 引入适配器模式
15.3 类适配器
15.4 适配器模式的扩展运用
第16章 桥接模式
16.1 一个传统的继承范例导致子类数量爆炸式增长
16.2 将类与类之间的继承关系改为委托关系
16.3 引入桥接模式
第17章 中介者模式
17.1 中介者的基本概念
17.2 中介者模式范例的引入
17.3 引入中介者模式
第18章 备忘录模式
18.1 一个具体实现范例
18.2 引入备忘录模式
第19章 职责链模式
19.1 一个关于涨薪审批的范例
19.2 引入职责链模式
19.3 单纯与非单纯的职责链模式
第20章 访问者模式
20.1 一个具体范例的逐渐演化
20.2 引入访问者模式
20.3 访问者模式深入理解
第21章 解释器模式
21.1 一个用解释器模式编写的范例
21.2 引入解释器模式
21.3 机器人运动控制范例
第22章 设计模式总结
附录A 类和对象
A.1 静态对象的探讨与全局对象的构造顺序
A.1.1 静态对象的探讨
A.1.2 全局对象的构造顺序问题
A.2 拷贝构造函数和拷贝赋值运算符
A.2.1 拷贝构造函数和拷贝赋值运算符的书写
A.2.2 对象自我赋值产生的问题
A.2.3 继承关系下拷贝构造函数和拷贝赋值运算符的书写
A.2.4 拷贝构造函数和拷贝赋值运算符中重复代码的处理
A.3 类的public继承(is-a关系)及代码编写规则
A.3.1 子类遮蔽父类的普通成员函数
A.3.2 父类的纯虚函数接口
A.3.3 父类的虚函数接口
A.3.4 为纯虚函数指定实现体
A.3.5 类的public继承(is-a关系)综合范例
A.3.6 public继承关系下的代码编写规则
A.4 类与类之间的组合关系与委托关系
A.4.1 组合关系
A.4.2
非常好的书,十分喜欢,业内经典。
2022-09-13 21:21:42
看起来不错哦
2022-09-14 08:48:59
东西收到了,用的vs2019l不过编译环境无所谓了,重点看知识,希望会有所提高吧
2022-09-15 09:16:48
书已经收到了,物流是速度稍微有些慢,质量挺不错的
2022-09-12 14:37:43
光线原因,拍摄不清楚,但是运输过程中出现了一定的损坏,内部有些压痕,外皮折痕比较大
2022-09-06 21:49:57
几十块钱的书里蕴含着百万的价值,感谢老师的辛苦付出
2022-08-23 17:58:27
必须好评 跟着老师学c++不迷路 一路前行 支持王老师 加油? 跟着视频学习效果更佳
2022-08-19 10:10:29
包装精致,书的价值极大,是作者二十多年的实践,而且易懂易学,实在难得,谢谢作者的付出贡献。
2022-08-20 11:03:06
终于等到老师新作了,配合着课程一起看效果非常棒,老师讲的课程对我帮助很大,赞??????
2022-08-13 17:05:50
质量很好自营信得过非常满意超级划算呢
2022-08-15 19:11:13