适配器模式:
将一个类的接口转换为客户希望的另外一个接口,从而使得原本由于接口不兼容而不能一起工作的类可以一起工作。
由于一个系统可能因不同的开发人员、不同的产品、不同的厂家而造成功能类似而接口不同,有点亡羊补牢的意思。此时,系统的行为与数据都正确,接口不一致,考虑使用适配器。
类图:
核心代码:
// Adaptee.h
#include <iostream>
class Adaptee
{
public:
Adaptee();
virtual ~Adaptee();
void specificRequest();
};
using namespace std;
Adaptee::Adaptee(){
}
Adaptee::~Adaptee(){
}
void Adaptee::specificRequest(){
cout << "specificRequest()|this is real Request from Adaptee!" << endl;
}
// Adapter.h
#include "Target.h"
#include "Adaptee.h"
class Adapter : public Target
{
public:
Adapter(Adaptee *adaptee);
virtual ~Adapter();
virtual void request();
private:
Adaptee* m_pAdaptee;
};
Adapter::Adapter(Adaptee * adaptee){
m_pAdaptee = adaptee;
}
Adapter::~Adapter(){
}
void Adapter::request(){
m_pAdaptee->specificRequest();
}
// client
#include <iostream>
#include "Adapter.h"
#include "Adaptee.h"
#include "Target.h"
using namespace std;
int main(int argc, char *argv[])
{
Adaptee * adaptee = new Adaptee();
Target * tar = new Adapter(adaptee);
tar->request();
return 0;
}