#include
using namespace std;
//适配器模式,通过调用第三方类库实现软件功能
//基类Base
class Base
{
public :virtual void process()=0;//process()为纯虚函数,多态
virtual ~Base(){}
};
//Adaptee类中的Request()函数已经实现了Adapter类process()需要的功能,
class Adaptee
{
public :void Request()
{
cout<<"Adaptee Request"<
}
};
class Derived:public Base
{
public:void process()
{
cout<<"Derived process"<
}
};
//想要调用类Adaptee的函数,用Adaptee的对象或指针才可以。
//在Adapter类的数据成员里声明一个Adaptee的对象或指针,实现类与类之间的通信
class Adapter:public Base
{
private:Adaptee *pAdaptee;
public:Adapter(Adaptee *t){pAdaptee =t;}
void process()
{pAdaptee->Request();}
};
int main (void)
{
Adaptee *p=new Adaptee();
Base *pAdapter =new Adapter(p);//基类指针指派生类对象
//此处不多态也可以,Adapter *pAdapter =new Adapter(p);
pAdapter->process();
delete p;
delete pAdapter;
长长
return 0;
}
|