1、PIMPL
私有化实现。解决头文件依赖,文件修改后整个系统需要重新编译的问题。他实现的是一个简单的桥接模式。在类中指针初始化的空间是固定的,不需要知道其具体 的类型,所有采用前置声明的方式,可以不需要在头文件中引用他的头文件。这样即隐藏了引用类的实现细节,又减少了编译时文件修改后的编译关联性。
2、NVI
提供一个公有的非虚接口函数,将虚函数私有化。实现行为和接口的分离。因为虚函数的多态性,公有非虚函数自然会去调用相应的虚函数实现。通过对虚函数的包装达到对接口与实现分离的效果。
3、RAII
保证析构函数总是正确被执行。借助函数栈原理,在申明周期结束的时候自动销毁,执行析构。在类的构造函数中申请资源,在析构函数中释放资源。也就是说局部 资源对象实例应该尽量分配在栈上而不是堆上,或者使用智能指针。智能指针使用时本身初始化在栈上,保证了在生命周期区域结束时正确的释放资源。