zoukankan      html  css  js  c++  java
  • 创建数据结构库基础设施——类族结构的进化

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

  • 相关阅读:
    国家行政区划地区编码表
    Java循环中标签的作用(转)
    通过ribbon 根据服务名获取所有服务实例的IP和端口列表
    rabbitmq重装依赖的erlang 要注意
    Rabbitmq关于集群节点功能的读书笔记
    CentOS7统计某个进程当前的线程数
    理解同步、异步、阻塞、非阻塞(传送门)
    代理模式和装饰模式区别
    【转载】Asp.Net生成图片验证码工具类
    【转载】使用宝塔Linux面板屏蔽某些IP访问你的服务器
  • 原文地址:https://www.cnblogs.com/dishengAndziyu/p/10920635.html
Copyright © 2011-2022 走看看