适配器模式

适配模式让我想起到了电脑的适配器, 设配器的功能就是将输入220A/5A的输入电源进行转化,成为适应电脑的输入电源5V /1A,适配器模式就是这个转换过程。

如上图在USB接口中接入电源插座B的接口,使之能适应于USB插座,而不改变usb原有的接口,在usb系统中新增adapter类,该类对外接口与usb接口保持一致。
在adapter 中封装了SocketOutput 接口,通过adapter改变电源和电流(变压),使之变得合适USB。


//插座抽象类
class ISocketOutput{
 public:
    virtual int getSocketU()= 0;
    virtual int getSocketA() = 0;
};

//实现了插座接口的插座类
class SocketOutput: public ISocketOutput
{
public:
    SocketOutput(int u, int a);
    SocketOutput();
    ~SocketOutput();
    int getSocketU();
    int getSocketA();

private:
    int m_socketU;
    int m_socketA;
};

SocketOutput::SocketOutput(int u, int a)
:m_socketU(u),
 m_socketA(a)
{
}


SocketOutput::SocketOutput(){
}

SocketOutput::~SocketOutput(){
}

int SocketOutput::getSocketU(){
    return m_socketU = 220;
}

int SocketOutput::getSocketA(){
    return m_socketA = 5;
}




//usb 抽象接口
class IUsbOutput{
public:
    virtual int getUsbU()= 0; //获取电压
    virtual int getUsbA() =0; //获取电流
};

/*实际USB接口类*/
class usbOutput: public IUsbOutput
{
public:
    usbOutput();
    ~usbOutput();
    int getUsbU();  //获取电压
    int getUsbA(); //获取电流

private:
   int m_usbU; //电压
   int m_USBA;//电流
};


usbOutput::usbOutput()
{
}

usbOutput::~usbOutput()
{
}
//USB接口直接获取电压
int usbOutput::getUsbU(){
    cout<<"直接通过现成的USB接口获取5U电压"<<endl;
    return 5;
}

//USB接口直接获取电流
int usbOutput::getUsbA(){
    cout<<"直接通过现成的USB接口获取1A电流"<<endl;
    return 1;

}





/*适配USB接口的适配器,
 * 改造插座输送来的电压和电流,
 * 实现usb抽象接口类的中的方法*/
class adapterInterface: public IUsbOutput, public SocketOutput
{
public:
    adapterInterface(int u,int i);
    ~adapterInterface();
    adapterInterface();
    int getUsbU(); //获取USB电压
    int getUsbA(); //获取USB电流

private:
    int changeU25(int u);//改变插座电压为5v
    int changeI21(int i);//改变电流为1A
};

adapterInterface::adapterInterface(int u,int i)
    :SocketOutput(u, i)
{
}

adapterInterface::adapterInterface(){}

adapterInterface::~adapterInterface(){}

//获取USB电压
int adapterInterface::getUsbU(){
      return changeU25(getSocketU());
}

//获取USB电流
int adapterInterface::getUsbA(){
      return changeI21(getSocketA());
}

//改变插座电压为5v
int adapterInterface::changeU25(int u){
    cout<<"采用适配器 将插座输入的"<<u <<"U 电压改成 5 U"<<endl;
    return 5;
}

//改变电流为1A
int adapterInterface::changeI21(int i){

    cout<<"采用适配器 将插座输入的"<<i <<"A 电流改成 1 A"<<endl;
    return 1;
}

client:

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
   // IUsbOutput* out = new usbOutput();//使用通用的,usb接口获取电压和电流
    IUsbOutput* out = new adapterInterface();//适配器将插座电压和电流转换成usb电压和电流
    out->getUsbA();
    out->getUsbU();
    return a.exec();
}

新增了一种供电方法:调用适配器模块获取电源 

通过原来的usb 供电设备供电。 

 适配器模式适用于场景:在在现有稳定的系统上接入新的系统,新系统接口与现有系统接口不太匹配的情况下。采用适配器模式符合设计原则。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值