设计模式之适配器模式(对象模式)

对象模式

#pragma once
class Target
{
public:
    Target();
    virtual ~Target();

    virtual void Request();
};
#include "Target.h"
#include <iostream>


Target::Target()
{
}


Target::~Target()
{
}

void Target::Request()
{
    std::cout << "Target::Request" << std::endl;
}

 

#pragma once
class Adaptee
{
public:
    Adaptee();
    ~Adaptee();

    void SpecificRequest();
};
#include "Adaptee.h"
#include <iostream>


Adaptee::Adaptee()
{
}


Adaptee::~Adaptee()
{
}

void Adaptee::SpecificRequest()
{
    std::cout << "Adaptee::SpecificRequest" << std::endl;
}

 

#include "Target.h"
#include "Adaptee.h"

class Adapter :
    public Target
{
public:
    Adapter(Adaptee *ade);
    ~Adapter();

    void Request();

protected:
    Adaptee *m_ade;
};
#include "Adapter.h"


Adapter::Adapter(Adaptee *ade)
{
    this->m_ade = ade;
}


Adapter::~Adapter()
{
}

void Adapter::Request()
{
    m_ade->SpecificRequest();
}

 

测试

#include <iostream>
#include "Adapter.h"

int main()
{
    Adaptee *ade = new Adaptee();
    Target *adt = new Adapter(ade);

    adt->Request();
  
  //内存释放
    if (ade)
    {
        delete ade;
        ade = NULL;
    }

    if (adt)
    {
        delete adt;
        adt = NULL;
    }
    std::cout << "Hello World!\n"; 
}

 

posted @ 2019-10-29 09:41  N_zero  阅读(144)  评论(0)    收藏  举报