创建数据结构库基础设施——类族结构的进化

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,异常类;

posted @ 2019-05-24 22:51  子宇24  阅读(218)  评论(0编辑  收藏  举报