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.设计模式之-工厂模式和与策略模式