适配器模式

2020-11-30  本文已影响0人  StevenHD

一、适配器模式

图解

二、实例代码

披着羊皮的狼

#include <iostream>

using namespace std;

class Goat
{
public:
    virtual void miemie() = 0;
};

class NormalGoat : public Goat
{
public:
    void miemie()
    {
        cout << "I am a real goat" << endl;
    }
};

class Wolf
{
public:
    void howl()
    {
        cout << "I am a real wolf" << endl;
    }
};

class AdapterGoat : public Goat
{
public:
    AdapterGoat(Wolf * w) : _w(w) {}

    void miemie()
    {
        _w->howl();
    }

protected:
    Wolf *_w;
};

int main()
{
    NormalGoat ng;
    ng.miemie();

    Wolf wf;
    wf.howl();

    AdapterGoat ag(&wf);
    ag.miemie();

    return 0;
}

三、STL中的适配器模式

deque就是适配器,使用deque实现了stack和queue。


图解
#include <iostream>

using namespace std;

// 适配器容器——stack, queue

class MyDeque
{
public:
    void push_back();
    void push_front();
    void pop_bac();
    void pop_front();
};

class MyStack
{
public:
    void push();
    void pop();

protected:
    MyDeque md;
};

class MyQueue
{
public:
    void enQueue()
    {
        md.push_back();
    }

    void deQueue()
    {
        md.pop_front();
    }

protected:
    MyDeque md;
};

int main()
{

    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读