乐趣区

适配器模式

简介

在面向过程的编程中,我们也经常会遇到接口不一致的情况,此时需要对原先的接口进行包装或适配。在面向对象中,适配器模式是指将一个类的接口转换成客户期望的接口,适配器模式让之前由于接口不兼容的类可以一起工作。它有两种方式,一种是类适配器,一种是对象适配器模式,我们只介绍对象适配器模式。

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)
}
退出移动版