使用场景
系统需要使用一些现有的类,而这些类的接口(如方法名)不符合系统的需要,甚至没有这些类的源代码。
想创建一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
有动机地修改一个正常运行的系统的接口,这时应该考虑使用适配器模式。
#include<iostream>
using namespace std;
#ifndef _OBJECT
class Target
{
public:
Target() {}
virtual ~Target() {}
virtual void Request() { cout << "Target::Request" << endl; }
protected:
private:
};
class Adaptee
{
public:
Adaptee() {}
~Adaptee() {}
void SpecificRequest() { cout << "Adaptee::SpecificRequest" << endl; }
protected:
private:
};
class Adapter : public Target, private Adaptee
{
public:
Adapter() {}
~Adapter() {}
void Request() { this->SpecificRequest(); }
protected:
private:
};
#else
class Target
{
public:
Target() {}
virtual ~Target() {}
virtual void Request() { cout << "Target::Request" << endl; }
protected:
private:
};
class Adaptee
{
public:
Adaptee() {}
~Adaptee() {}
void SpecificRequest() { cout << "Adaptee::SpecificRequest object" << endl; }
protected:
private:
};
class Adapter : public Target
{
public:
Adapter(Adaptee* ade) { _ade = ade; }
~Adapter() {}
void Request() { _ade->SpecificRequest(); }
protected:
private:
Adaptee *_ade;
};
#endif
int main(int argc, char* argv[])
{
#ifndef _OBJECT
Target* adt = new Adapter();
#else
Adaptee* ade = new Adaptee;
Target*adt = new Adapter(ade);
#endif
adt->Request();
return 0;
}
0 评论