适配器模式将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
对象适配:
类适配:
#include <iostream>
using namespace std;
// 俩孔插座
class SocketWithTwoHole
{
public:
virtual void PowerOn()
{
cout << "通过两孔插座提供电源" << endl;
}
};
// 三角插头
class PlugWithThreeHand
{
public:
void Use3Hand()
{
cout << "使用三孔插头获得电源" << endl;
}
};
// 类适配(把双孔插座的接口改成三孔插座并调用三爪插头)
class Adapter1 : public SocketWithTwoHole, public PlugWithThreeHand
{
public:
void PowerOn()
{
Use3Hand();
}
};
// 对象适配
class Adapter2 : public SocketWithTwoHole
{
public:
Adapter2()
{
pPlug = new PlugWithThreeHand();
}
~Adapter2()
{
if (NULL != pPlug)
{
delete pPlug;
pPlug = NULL;
}
}
void PowerOn()
{
cout << "通过两孔插座提供电源" << endl;
pPlug->Use3Hand();
}
private:
PlugWithThreeHand* pPlug;
};
void test_01()
{
SocketWithTwoHole* socket = new SocketWithTwoHole;
socket->PowerOn();
cout << "---------------------" << endl;
socket = new Adapter1;
socket->PowerOn();
cout << "---------------------" << endl;
socket = new Adapter2;
socket->PowerOn();
}
int main()
{
test_01();
system("pause");
return 0;
}