zoukankan      html  css  js  c++  java
  • 学习笔记——适配器模式Adapter

    适配器模式适用于将不一致的接口转换为一致的接口。

    比如,去香港玩儿,带上了自己的笔记本电脑,结果晚上插电时就抓瞎了,电源插孔与插座不一致。WTF……

    插座是酒店装好的,不可能拆了换一个,电源是自己的,也不可能说重新买一个,只有买个转换器了。

    通过转换器,将我们不适配的插头转换成适配的插头。

    CTarget外部接口,理解为所需要插头样式;

    CAdapter为适配器(转换器),将不适配插头(CAdaptee)转换为适配样式;

    CAdaptee为待适配类,理解为需要转换插头样式的插头。

    C++示例

    ITarget.h

    1 #pragma once
    2 class ITarget
    3 {
    4 public:
    5     ITarget(void);
    6     virtual ~ITarget(void);
    7 public:
    8     void Request();
    9 };

    ITarget.cpp

     1 #include "ITarget.h"
     2 #include <iostream>
     3 
     4 ITarget::ITarget(void)
     5 {
     6 }
     7 
     8 
     9 ITarget::~ITarget(void)
    10 {
    11 }
    12 
    13 void ITarget::Request()
    14 {
    15     std::cout<<"Target"<<std::endl;
    16 }

    Adapter.h

     1 #pragma once
     2 #include "itarget.h"
     3 #include "Adaptee.h"
     4 
     5 class Adapter :
     6     public ITarget
     7 {
     8 public:
     9     Adapter(void);
    10     Adapter(Adaptee* tee);
    11     ~Adapter(void);
    12 public:
    13     void Request();
    14 private:
    15     Adaptee* mAde;
    16 };

    Adapter.cpp

     1 #include "Adapter.h"
     2 
     3 
     4 Adapter::Adapter(void)
     5 {
     6 }
     7 
     8 Adapter::Adapter(Adaptee* tee)
     9 {
    10     this->mAde = tee;
    11 }
    12 
    13 Adapter::~Adapter(void)
    14 {
    15 }
    16 
    17 void Adapter::Request()
    18 {
    19     mAde->Request();
    20 }

    Adaptee.h

    1 #pragma once
    2 class Adaptee
    3 {
    4 public:
    5     Adaptee(void);
    6     ~Adaptee(void);
    7 public:
    8     void Request();
    9 };

    Adaptee.cpp

     1 #include "Adaptee.h"
     2 #include <iostream>
     3 
     4 Adaptee::Adaptee(void)
     5 {
     6 }
     7 
     8 
     9 Adaptee::~Adaptee(void)
    10 {
    11 }
    12 
    13 
    14 void Adaptee::Request()
    15 {
    16     std::cout<<"1"<<std::endl;
    17 }

    main.cpp

     1 #include "Adaptee.h"
     2 #include "Adapter.h"
     3 
     4 int main()
     5 {
     6     Adaptee* ade = new Adaptee();
     7     Adapter* pTarget = new Adapter(ade);
     8     pTarget->Request();
     9     return 0;
    10 }
  • 相关阅读:
    Cocos2dx-Android屏幕适配方案
    Cocos2dx-Mac下的环境配置
    Cocos2dx-C++和Lua数据通讯
    Cocos2dx-Lua与C++混合使用
    安装宝塔面板
    nginx配置ssl安全证书
    在nginx上运行spring
    spring在服务器上的启动和关闭jar包
    idea常用插件
    maven打包war
  • 原文地址:https://www.cnblogs.com/dev2007/p/3566224.html
Copyright © 2011-2022 走看看