適配器模式
適配器模式指通過把接口轉換成用戶需要的接口,來讓原本由於接口不兼容而不能一起工作的那些類可以一起工作。
舉個簡單的例子,在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的接口。