创建数据结构库基础设施——类族结构的进化
1,如何很好的整合类,遵循现代的软件架构模式,这是本文主题;
2,遵循经典设计准则:
1,DTLib 中的所有类位于单一的继承树;
2,Object 顶层父类定义了动态内存申请时候的行为,特别是定义了当动态内存申请失败的时候如何来处理的行为(直接返回空指针,并不会返回异常,所以对于 DTLib 里面的类的话,动态申请后一定要判断是否为空指针);
3,增加 invalidOperatorException 是因为我们创建的数据结构类是有状态的,不同状态下成员函数调用后的行为是不同的,特别的在有些类对象的初始状态下,某些成员函数是不能调用的,要是硬要调用则抛出异常;
3,改进的关键点:
1,Exception 类继承自 Object 类(遵循单一继承原则):
1,堆空间中创建异常对象失败时,返回 NULL 指针;
2,新增 InvalidOperatorException 异常类:
1,成员函数调用时,如果状态不正确则抛出异常;
3,SmartPointer 类继承自 Object 类:
1,堆空间中创建智能指针对象失败时,返回 NULL 指针;
5,DTLib 开发方式和注意事项:
1,迭代开发(现代软件工程里面流行的开发方式):
1,每次完成一个小的目标,持续开发,最终打造可复用类库;
2,单一继承树:
1,所有类都继承自 Object,规范堆对象创建时的行为;
3,只抛异常,不处理异常:
1,使用 THROW_EXCEPTION 抛出异常,提高可移植性(不用 try catch 语句,因为一些古代的编译器不支持异常处理,有些公司明确禁止使用 try catch,只需用对 DTLib 做很小改动就可以实现);
4,弱耦合性:
1,尽量不使用标准库中的类和函数(一些公司里面禁止使用标准库),提高可移植性;
6,第一阶段学习总结:
1,数据结构与算法之间的关系;
2,算法效率的度量方法;
3,DTLib 的基础设施构建:
1,顶层父类;
2,智能指针;
3,异常类;