适配器模式

适配器模式

概念

是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式。

角色和职责

这里写图片描述

  • Target:
    目标类,也就是客户端希望使用的类,里面有希望得到的接口–对应案例中的18V。

  • Adapter

适配器,将实际接口转换为希望使用的接口,适配器继承自目标类。–对应案例中的Adapter。

  • Adaptee

待适配的类,实际提供的类,通过适配器的功能,客户端可以使用其提供的实际类!–对应案例中的220V。

案例

#include <iostream>

using namespace std;


/*客户端希望使用的接口类*/
class Current18V
{
public:
    virtual void useCurrent18v() = 0;//希望使用的接口
};

/*提供实际接口的类*/
class Current220V
{
public:
    void useCurrent220v()//实际接口
    {
        cout<<"i am 220v"<<endl;
    }
};

/*适配器--为了将实际接口转换为希望使用的接口
--继承自希望使用的接口类
--有一个有参构造函数
--有一个实际接口类的对象或者指针作为成员变量--
--在希望使用的接口类的虚函数里调用实际类的接口达到转换的目的*/
class Adapter : public Current18V
{
public:
    Adapter(Current220V* current)//有参构造函数--形参是关于实际接口的成员变量
    {
        m_current = current;
    }

    //适配器的虚函数里调用实际类提供的接口--进行转换
    //这就是对外提供的接口--也是客户端希望使用的接口
    virtual void useCurrent18v()
    {
        cout<<"use 220v"<<endl;
        m_current->useCurrent220v();//调用实际提供的接口
    }

private:
    Current220V* m_current;//适配器有一个关于实际接口的成员变量
};

int main()
{
    Current220V * current220v = new Current220V;//实际接口
    Adapter *adapter = new Adapter(current220v);//适配器
    adapter->useCurrent18v();//适配器调用期望接口--实质在虚函数调用实际接口

    /*回收内存*/
    delete adapter;
    delete current220v;

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值