谈谈对容器适配器的理解

来源:互联网 发布:acrobat xi注册机 mac 编辑:程序博客网 时间:2024/04/29 02:08

对于容器适配器,它和顺序容器到底有什么区别?看了一晚上的书,似懂非懂,后来理清了一下思路:

适配器:adapter,其原意是插座,适配器,接合器的意思。假如说现在在编写程序中需要一个栈结构,可以用deque来模拟,然而deque

毕竟不能直接作为一个stack,它并不能直接严格满足要求,因为我们不能防止别人在另一端乱动我的东西,(因为deque是一种顺序容器,其为双端队列)

然而我们所需要的栈结构是一种顺序容器适配器,该队列保证只在队尾插入新元素,而且只能在队首删除元素。那这个

时候我们需要对它进行一些包装,作出一定的限制以满足我们所需要的栈结构的要求。我们使之只能

在一端进行插入和删除。也就是说我必须提供一个"插座",这个“插座”一端插在deque上,另一端插在我的程序中,那么

现在我就可以使用栈结构了。而stack就是这个的“插座”,它连接了deque和我的程序。表面上看我使用的是stack,

实际上我是通过stack这个“插座”来使用deque(因为stack完全是用deque来实现的,但是它并没有任何其他的东西,它只是在的确上面

作了一层包装,相当于一个“插座”的功能)。因此,stack,queue,priority_queue这样的类一般称为容器适配器,他们只是基本

容器类型(vector,dequeue,list)的适配

实际上,这也是适配器模式的基本思想:将一个类的接口转换为客户希望的另一个接口。Adapter模式使得

原本由于接口不兼容而不能一起工作的那些类可以一起工作。也就是说,在一个类的接口上提供一个“插座”类,使它变成我希望使用的接口。

0 0
原创粉丝点击