4 类族结构的改进

  • 遵循经典设计准则:DTLib 中的所有类位于单一的继承树

  • 改进的关键点

    • Exception 类继承自 Object 类:堆空间中创建异常对象失败时,返回 NULL 指针

    • 新增 InvalidOperationException 类:成员函数调用时,如果状态不正确则抛出异常

    • SmartPointer 类继承自 Object 类:堆空间中创建智能指针对象失败时,返回 NULL 指针

  • Demo

    //SmartPointer.h
    #include "Object.h"
    class SmartPointer: public Object
        
    //Exception.h
    class InvalidOperatorException : public Exception
    {
    public:
        //无参构造
        InvalidOperatorException() : Exception(0,0,0) {}
        //有参构造
        InvalidOperatorException(const char* message) : Exception(message,0,0) {}
        InvalidOperatorException(const char* file,int line) : Exception(0,file,0) {}
        InvalidOperatorException(const char* message,const char* file,int line) : Exception(message,file,line) {}
        //拷贝构造
        InvalidOperatorException(const InvalidOperatorException& e) : Exception(e) {}
        //"="
        InvalidOperatorException& operator= (const InvalidParameterException& e){
            Exception::operator =(e);
            return *this;
        }
    };
    
  • DTLib 的开发方式和注意事项

    • 迭代开发
    • 单一继承树:所有类都继承自 Object ,规范堆对象创建时的行为
    • 只抛异常,不处理异常:使用 THROW_EXCEPTION 抛出异常,提高可移植性
    • 弱耦合性:尽量不使用标准库中的类和函数,提高可移植性
原文地址:https://www.cnblogs.com/bky-hbq/p/13623799.html