图书目录

目录

第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.3C++编程环境介绍

1.3.1C++编程环境搭建说明

1.3.2创建最基本的能运行的C++程序

1.3.3Visual 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.6public继承关系下的代码编写规则

A.4类与类之间的组合关系与委托关系

A.4.1组合关系

A.4.2委托关系

A.5类的private继承探讨

A.6不能被拷贝构造和拷贝赋值的类对象

A.7虚析构函数的内存泄漏问题深谈

A.8类设计中的一些技巧

A.8.1优先考虑为成员变量提供访问接口

A.8.2如何避免将父类的虚函数暴露给子类

A.8.3不要在类的构造函数与析构函数中调用虚函数

A.8.4析构函数的虚与非虚谈

A.8.5抽象类的模拟

A.8.6尽量避免隐式类型转换

A.8.7强制类对象不可以或只可以在堆上分配内存

A.9命名空间使用的一些注意事项

A.10类定义的相互依赖与类的前向声明

附录B引用计数基础理论和实践

B.1shared_ptr实现及string存储简单说明

B.1.1shared_ptr智能指针实现简单说明

B.1.2string类型字符串存储方式的简单说明

B.2通过写时复制方式实现的mystring类

B.2.1骨架与计数设计

B.2.2构造函数

B.2.3拷贝构造函数

B.2.4析构函数

B.2.5拷贝赋值运算符

B.2.6外部加锁、内部加锁、写时复制

B.2.7通过指针修改mystring所指字符串的内容