1.适配器模式的概念与类图
适配器模式即根据所需接口,改变已有类的接口形式,来匹配所需接口。其主要适用于将一个类的接口转换为客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
具体的类图构造如下:
根据类图可知,客户端调用的是抽象接口Target,而其主要通过适配器类Adapter来将现有的类Adaptes转换为对应的接口。换句话说,适配器类Adapter并不会主动的new出来,其是通过父类的Target接口来new出来的。
2.适配器模式的实现代码
这里采用的是18V的电脑与220V的电源之间的电压适配转换问题。
#include <iostream>
using namespace std;
class Computer18V
{
public:
virtual void use18V() = 0;
};
class Source220V
{
public:
void use_tansform18V()
{
cout << "transform the source to 18V" << endl;
}
void use220V()
{
cout << "use the 220V source" << endl;
}
};
class Adapter : public Computer18V
{
public:
Adapter(Source220V* source)
{
m_voltage = source;
}
void use18V()
{
m_voltage->use_tansform18V();
}
private:
Source220V* m_voltage;
};
int main()
{
Source220V* source220v = new Source220V;
Computer18V* sourcr18V = new Adapter(source220v);
//这里注意new的类型和变量类型不同
sourcr18V->use18V();
delete source220v;
delete sourcr18V;
return 0;
}