常见的适配器模式的例子就是Wrapper。在这个模式中有3个对象,一个是Target,是适配器的使用者,它会向适配器发起某种使用请求;一个是Adaptee,Target最终要使用的就是Adaptee;两者中间的Wrapper就是适配器Adaptor,它负责转换请求。
以下代码定义了目标的抽象类。
#include <iostream>
using namespace std;
class Target
{
public:
virtual ~Target(){}
virtual void Request(void)=0;
};
以下代码定义了Adaptee。
class Adeptee
{
public:
void SpecialRequest(void)
{
cout<<__PRETTY_FUNCTION__<<endl;
}
};
以下代码定义了适配器,它也就成了实际的Target。
class Adaptor:public Target
{
private:
Adeptee* m_pAdeptee;
public:
Adaptor(Adeptee* m_pSocket):m_pAdeptee(m_pSocket)
{
if (m_pSocket == nullptr)
{
m_pAdeptee = new Adeptee();
}
}
void Request(void)
{
cout<<__PRETTY_FUNCTION__<<"->";
m_pAdeptee->SpecialRequest();
}
};
以下代码使用适配器发起了一次请求。
int main(void)
{
Target* T = new Adaptor(new Adeptee());
T->Request();
delete T;
return 0;
}
输出
virtual void Adaptor::Request()->void Adeptee::SpecialRequest()
网友评论