简介
在面向过程的编程中,我们也经常会遇到接口不一致的情况,此时需要对原先的接口进行包装或适配。在面向对象中,适配器模式是指将一个类的接口转换成客户期望的接口,适配器模式让之前由于接口不兼容的类可以一起工作。它有两种方式,一种是类适配器,一种是对象适配器模式,我们只介绍对象适配器模式。
UML 类图
示例
宝钢和武钢合并成立宝武,这两家公司肯定需要有多个系统需要融合,在这里我们使用宝钢的系统,武钢的系统需要进行适配,我们简单抽象出宝钢系统类和武钢系统类。
适配器类(CAdapter),武钢系统的类(CWuSteelSystem),宝钢系统的类 (CBaoSteelSystem)
#ifndef ADAPTER_H
#define ADAPTER_H
using namespace std;
class CBaoSteelSystem
{
public:
virtual void AddPerson(){}
};
class CWuSteelSystem
{
public:
long AddEmployee()
{return 0;}
};
class CAdapter:public CBaoSteelSystem
{
public:
CAdapter(CWuSteelSystem *pSystem):m_pSystem(pSystem){}
virtual void AddPerson()
{m_pSystem->AddEmployee();
}
public:
CWuSteelSystem* m_pSystem;
};
#endif
客户端调用的类
#include "adapter.h"
#define SAFE_DELETE(p) if(p){delete (p); (p) = 0;}
int main()
{
CWuSteelSystem* pSystem = new CWuSteelSystem;
CAdapter* pAdater = new CAdapter(pSystem);
pAdater->AddPerson();
SAFE_DELETE(pAdater)
SAFE_DELETE(pSystem)
}