一、适配器模式
图解二、实例代码
披着羊皮的狼
#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;
}
网友评论