//Adapter模式又叫适配器模式,顾名思义,这个模式就是把一个不能用的东西“适配”成可以用的东西。
//那么是如何“适配”的呢?比如,东西A想使用东西B,但是A没有能力(没法)使用B,怎么办?A就让东西C帮忙,A通过C就可以用B了。C如何帮忙呢?
//C一边可以通过一个“手柄”让A握住,A一用力,C就在另一边握住B的“手柄”,使用B。这样A就可以间接的使用到B了。
//A通过C使用B
// 1、C继承A和B C(A子类可以调用A一切函数)就能使用B了(类继承)
// 2、C继承A B作为成员数据被引入C (类组合)
//类模式的Adapter实现:
#include <stdio.h>
class Target
{
public:
Target();
virtual ~Target();
virtual void Request()
{
printf("Target::Request");
}
protected:
private:
};
class Adaptee //ee结尾表被动 er表主动 employ: employer,employee雇主,雇员 train: trainer, trainee训练者,受训者 address: addresser (addressor), addressee发件人,收件人
{
public:
Adaptee();
~Adaptee();
void SpecificRequest()
{
printf("Adaptee::SpecificRequest");
}
protected:
private:
};
class Adapter:public Target,private Adaptee
{
public:
Adapter();
~Adapter();
void Request()
{
this->SpecificRequest();
}
protected:
private:
};
void Adapter_test1(int argc,char* argv[])
{
Target* adt = new Adapter(); //Adapter* adt = new Adapter();
adt->Request();
return ;
}
//对象模式的Adapter实现:
class Target
{
public:
Target();
virtual ~Target();
virtual void Request()
{
printf("Target::Request");
}
protected:
private:
};
class Adaptee
{
public:
Adaptee();
~Adaptee();
void SpecificRequest()
{
printf("Adaptee::SpecificRequest");
}
protected:
private:
};
class Adapter:public Target
{
public:
Adapter(Adaptee* ade)
{
this->_ade = ade;
}
~Adapter();
void Request()
{
_ade->SpecificRequest();
}
protected:
private:
Adaptee* _ade;
};
void Adapter_test2(int argc,char* argv[])
{
Adaptee* ade = new Adaptee;
Target* adt = new Adapter(ade);
adt->Request();
return;
}