• 学习笔记——适配器模式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 }
  • 相关阅读:
    hdu4841 圆桌问题[STL vector]
    hdu1002 A + B Problem II[大数加法]
    hdu1501 Zipper[简单DP]
    C语言学习之结构体
    C++学习之从C到C++
    一键自动格式化你的代码
    C标准库string.h中几个常用函数的使用详解
    Jlink使用技巧系列教程索引
    Jlink使用技巧之合并烧写文件
    Jlink使用技巧之烧写SPI Flash存储芯片
  • 原文地址:https://www.cnblogs.com/dev2007/p/3566224.html
Copyright © 2020-2023  润新知