一、功能
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
二、结构图
#include <iostream>
using namespace std;
class Implementor
{
public:
virtual void OperationImp() = 0 ;
} ;
class ConcreteImplementorA : public Implementor
{
public:
virtual void OperationImp(){cout<<"ConcreteImplementorA"<<endl;}
} ;
class ConcreteImplementorB : public Implementor
{
public:
virtual void OperationImp(){cout<<"ConcreteImplementorB"<<endl;}
} ;
class Abstraction
{
public:
Implementor* imp;
void Operation(Implementor* imp) {this->imp=imp; }
};
class RefinedAbstraction :public Abstraction
{
public:
RefinedAbstraction() {}
} ;
int main()
{
Abstraction obj1,obj2;
obj1.imp=new ConcreteImplementorA();
obj1.imp->OperationImp();
obj2.imp=new ConcreteImplementorB();
obj2.imp->OperationImp();
RefinedAbstraction obj;
obj.imp=new ConcreteImplementorA();
obj.imp->OperationImp();
return 0;
}