将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。
#include <iostream>
using namespace std;
// Abstraction
class Abstraction {
public:
virtual void Operation() = 0;
virtual ~Abstraction() { }
protected:
Abstraction() { }
};
// AbstractionImp
class AbstractionImp :public Abstraction {
public:
virtual void Operation() = 0;
virtual ~AbstractionImp() { }
protected:
AbstractionImp() { }
};
class ConcreteAbstractionImp :public AbstractionImp {
public:
void Operation() {
cout << "ConcreteAbstractionImp Operation..." << endl;
}
};
class RefinedAbstraction :public Abstraction {
public:
RefinedAbstraction(AbstractionImp *imp) {
_imp = imp;
}
void Operation() {
_imp->Operation();
}
private:
AbstractionImp *_imp;
};
int main() {
AbstractionImp *imp = new ConcreteAbstractionImp();
Abstraction *abs = new RefinedAbstraction(imp);
abs->Operation();
delete imp;
delete abs;
return 0;
}