一、适配器(Adapters)
它是一种设计模式,为STL中能够将一个类的接口转化为用户更加想要使用的接口,适配器就扮演者轴承、转换器的功能
就是一个wrapper的模式,将要修饰的接口进行二次包装,展露出可以更容易让用户接受的接口方式。
适配器分为容器适配器、迭代器适配器、函数适配器。
二、容器适配器(Contioner Adapter)
诸如stack、queue把它们成为容器相较于容器适配器来说,显得我们更加业余。
我们将它们成为容器适配器
stack、queue本质是基于deque(一种双端队列)来进行封装
三、迭代器适配器(Iterator Adapter)
在对list接口的模拟实现时,不断地发现了迭代器的本质就是指针(stack、queue)或者是对指针的进一步封装(list)。正向迭代器与反向迭代器的类的封装直接证实关于迭代器作为一种适配器来作为模板参数进行传递的特性。
再反向迭代器的实现时,正是以正向迭代器为基础,对正向迭代器的接口进行了封装,减少了代码书写,下方的模板参数中的Iterator最终就转化为正向迭代器的类型。
template<class Iterator>
class Reverse_Iterator
{
typename typedef Iterator::Ptr Ptr;
typename typedef Iterator::Ref Ref;
typedef Reverse_Iterator<Iterator> self;
public:
Reverse_Iterator(Iterator it)
: _it(it)
{}
Iterator _it;
};