适配器模式
适配器模式指通过把接口转换成用户需要的接口,来让原本由于接口不兼容而不能一起工作的那些类可以一起工作。
举个简单的例子,在STL中实际上只提供了双端队列(deque)的数据结构,而栈(stack)和队列(queue)都是通过适配器模式来转换双端队列(deque)的接口来实现的。
class Deque
{
public:
void push_back(int x){}
void push_front(int x){}
void pop_back(){}
void pop_front(){}
};
class Stack
{
public:
void push(int x){deque.push_back(x);}
void pop(){deque.pop_back();}
private:
Deque deque;
};
class Queue
{
public:
void push(int x){deque.push_back(x);}
void pop(){deque.pop_front();}
private:
Deque deque;
};
如果继承Deque那么在子类中会暴露过多信息,所以通过添加为成员的方式来使用Deque的接口。