1、PIMPL
私有化實現。解決頭文件依賴,文件修改後整個系統需要重新編譯的問題。他實現的是一個簡單的橋接模式。在類中指針初始化的空間是固定的,不需要知道其具體的類型,所有采用前置聲明的方式,可以不需要在頭文件中引用他的頭文件。這樣即隱藏了引用類的實現細節,又減少了編譯時文件修改後的編譯關聯性。
2、NVI
提供一個公有的非虛接口函數,將虛函數私有化。實現行為和接口的分離。因為虛函數的多態性,公有非虛函數自然會去調用相應的虛函數實現。通過對虛函數的包裝達到對接口與實現分離的效果。
3、RAII
保證析構函數總是正確被執行。借助函數棧原理,在申明周期結束的時候自動銷毀,執行析構。在類的構造函數中申請資源,在析構函數中釋放資源。也就是說局部資源對象實例應該盡量分配在棧上而不是堆上,或者使用智能指針。智能指針使用時本身初始化在棧上,保證了在生命周期區域結束時正確的釋放資源。