1.功能
分离抽象和实现
2.优点
(1)使得抽象和实现可以独立扩展
(2)降低抽象与实现之间的耦合度
类图
代码实现
#include <iostream>
using namespace std;
//实现类
class AbstractionImpl{
public:
virtual void operation()=0;
virtual~ AbstractionImpl(){
cout<<"这是AbstractionImpl的析构函数..."<<endl;
}
};
//实现类A
class ImplA:public AbstractionImpl{
public:
void operation(){
cout<<"ImplA的operation..."<<endl;
}
~ImplA(){
cout<<"这是ImplA的析构函数..."<<endl;
}
};
//实现类B
class ImplB:public AbstractionImpl{
public:
void operation(){
cout<<"ImplB的operation..."<<endl;
}
~ImplB(){
cout<<"这是ImplB的析构函数..."<<endl;
}
};
//抽象类
class Abstraction{
private :
AbstractionImpl *pImpl;
public:
Abstraction(AbstractionImpl *t){
pImpl=t;
}
virtual void operation(){
pImpl->operation();
}
virtual ~Abstraction(){
delete pImpl;
cout<<"这是Abstraction的析构函数..."<<endl;
}
};
//抽象类A
class AbstractionA:public Abstraction{
public:
AbstractionA(AbstractionImpl *t):Abstraction(t){
}
void operation(){
}
};
//抽象类B
class AbstractionB:public Abstraction{
public:
AbstractionB(AbstractionImpl *t):Abstraction(t){
}
void operation(){
}
};
int main(void){
AbstractionImpl *pImplA=new ImplA();
Abstraction *pA=new AbstractionA(pImplA);
pA->operation();
delete pA;
}