设计模式-结构模式-适配器模式

2020-04-28  本文已影响0人  阿棍儿_Leon

常见的适配器模式的例子就是Wrapper。在这个模式中有3个对象,一个是Target,是适配器的使用者,它会向适配器发起某种使用请求;一个是Adaptee,Target最终要使用的就是Adaptee;两者中间的Wrapper就是适配器Adaptor,它负责转换请求。

以下代码定义了目标的抽象类。

#include <iostream>

using namespace std;

class Target
{
public:
    virtual ~Target(){}
    virtual void Request(void)=0;
};

以下代码定义了Adaptee。

class Adeptee
{
public:
    void SpecialRequest(void)
    {
        cout<<__PRETTY_FUNCTION__<<endl;
    }
};

以下代码定义了适配器,它也就成了实际的Target。

class Adaptor:public Target
{
private:
    Adeptee* m_pAdeptee;
public:
    Adaptor(Adeptee* m_pSocket):m_pAdeptee(m_pSocket)
    {
        if (m_pSocket == nullptr)
        {
            m_pAdeptee = new Adeptee();
        }
    }
    void Request(void)
    {
        cout<<__PRETTY_FUNCTION__<<"->";
        m_pAdeptee->SpecialRequest();
    }
};

以下代码使用适配器发起了一次请求。

int main(void)
{
    Target* T = new Adaptor(new Adeptee());
    T->Request();
    delete T;
    return 0;
}

输出

virtual void Adaptor::Request()->void Adeptee::SpecialRequest()
上一篇下一篇

猜你喜欢

热点阅读