1.RAII:
借用局部對
象資源管理的概念。即在一個作用域中的局部對象,在程序運行超過該作用域后,該對象被自動銷毀。
2.PIMPL:
PIMPL慣用手法的作用是解開類的使用接口和實現的耦合。涉及緊耦合和松耦合的概念。松耦合對于編譯時有好處的。舉例說明如下:
#include<x.hpp>
class C
{
public:
void f1();
private:
X x; //與X的強耦合
};
如上面的代碼,C與X的實現就是強耦合的。從語義角度來講(或者從封裝的角度來講),X是C的實現的一部分,不應該暴露給客戶,它對客戶應該是透明的。以上的強耦合,導致如果X的實現部分被更改,則在編譯的時候,不僅X要重新編譯一次,就連C也要受到牽連。解決這個途徑就是采用PIMPL手法.即將C中X的對象,改為指向X對象的指針。使用指針有效得隔離了X的實現。且不需要包含X的頭文件,即#include<x.hpp>這一句可以省略。
使用PIMPL修改后的類如下:
class X; //用前置聲明來取代include<x.hpp>
class C
{
...
private:
X* pImpl; //聲明一個X*的時候,class X不用完全定義
};
在一個既定的平臺上,任何指針的大小都是相同的。這樣修改X的定義,就不會影響到類C了。不會出現“城門失火,殃及池魚。”就是因為護城河離城門遠了(松耦合)。
3.設計模式之-工廠模式和與策略模式