#include <QtCore/QCoreApplication>
#include <QDebug>
class Target
{
public:
Target()
{
qDebug()<<"Construct target";
}
virtual ~Target()
{
qDebug()<<"Destory target";
}
virtual void Request()
{
qDebug()<<"interface";
}
};
class Adaptee
{
public:
Adaptee()
{
qDebug()<<"Construct Adaptee";
}
~Adaptee()
{
qDebug()<<"Destory Adaptee";
}
void SpecificRequest()
{
qDebug()<<"Adaptee::SpecificRequest()"<<endl;
}
};
//类模式
class Adapter:public Target,private Adaptee
{
public:
Adapter()
{
qDebug()<<"Construct Adapter";
}
~Adapter()
{
qDebug()<<"Destroy Adapter";
}
void Request()
{
qDebug()<<"Adapter Request";
this->SpecificRequest();
}
};
//对象模式
class Adapter1:public Target
{
public:
Adapter1(Adaptee* adaptee)
{
this->m_adaptee = adaptee;
}
Adapter1():m_adaptee(new Adaptee)
{
qDebug()<<"Construct Adapter1";
}
~Adapter1()
{
qDebug()<<"Destory Adapter1";
}
virtual void Request()
{
qDebug()<<"Adapter1::Request()"<<endl;
this->m_adaptee->SpecificRequest();
}
private:
Adaptee* m_adaptee;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//类模型
Target* pTarget = new Adapter();
pTarget->Request();
//对象模型1
Adaptee *ade = new Adaptee();
Target* pTarget1 = new Adapter1(ade);
pTarget1->Request();
//对象模型2
Target* pTarget2 = new Adapter1();
pTarget2->Request();
return a.exec();
}
#include <QDebug>
class Target
{
public:
Target()
{
qDebug()<<"Construct target";
}
virtual ~Target()
{
qDebug()<<"Destory target";
}
virtual void Request()
{
qDebug()<<"interface";
}
};
class Adaptee
{
public:
Adaptee()
{
qDebug()<<"Construct Adaptee";
}
~Adaptee()
{
qDebug()<<"Destory Adaptee";
}
void SpecificRequest()
{
qDebug()<<"Adaptee::SpecificRequest()"<<endl;
}
};
//类模式
class Adapter:public Target,private Adaptee
{
public:
Adapter()
{
qDebug()<<"Construct Adapter";
}
~Adapter()
{
qDebug()<<"Destroy Adapter";
}
void Request()
{
qDebug()<<"Adapter Request";
this->SpecificRequest();
}
};
//对象模式
class Adapter1:public Target
{
public:
Adapter1(Adaptee* adaptee)
{
this->m_adaptee = adaptee;
}
Adapter1():m_adaptee(new Adaptee)
{
qDebug()<<"Construct Adapter1";
}
~Adapter1()
{
qDebug()<<"Destory Adapter1";
}
virtual void Request()
{
qDebug()<<"Adapter1::Request()"<<endl;
this->m_adaptee->SpecificRequest();
}
private:
Adaptee* m_adaptee;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//类模型
Target* pTarget = new Adapter();
pTarget->Request();
//对象模型1
Adaptee *ade = new Adaptee();
Target* pTarget1 = new Adapter1(ade);
pTarget1->Request();
//对象模型2
Target* pTarget2 = new Adapter1();
pTarget2->Request();
return a.exec();
}