下面的代码是不是使用了PIMPL (Private Implementation),它属于什么模式,我看到QT的原码中全是这样用的
//a.h:
class APrivate;
class A
{
public:
A();
void functionA();
private:
friend class APrivate;
APrivate * const d;
};
//a_p.h
class A
class APriavte
{
public:
APrivate(A *c):q(c){}
void functionA();
private:
A *q;
};
我的理解是使用APrivate类可以把接口和实现分开,可以把关于A的实现放到APrivate中,是这样的吗?我要把所有的关于A的方法全都移到APriavte中实现吗?我看到别人的代码在类A中也是实现了一些方法了,我要怎么区分哪些在A中实现,哪些在APrivate中实现呢?求高人指点。
[解决办法]
应该属于桥接模式,将抽象部分与实现部分分离,使得他们两部分可以独立地变化