STL Adapters

配接器在STL组件的灵活组合运用功能上,扮演着轴承、转换器的角色。Adaper这个概念,事实上是一种设计模式。在《设计模式》中adapter定义如下:将一个class的接口转换为另一个class的接口,使原本因接口不兼容而不能合作的classes,可以一起运作。

adapter模式

如果你有一个存在的系统需要插入一个新的类库,但是新的类库并不能匹配你写的系统,这时候我们就需要写一个适配器了,用这个适配器来适配新类库的接口。

adapter取自生活中的配接器
242dd42a2834349bcff8dd6ecbea15ce37d3be5b
在软件中也就是
902397dda144ad34bc5d346cd2a20cf430ad857f

实现Adapter的方式主要有两种:组合(composition)和继承(inheritance)。
stl主要是用组合这种方式
container adapters内藏了一个container member一样,reverse iterator底层内藏了iterator member,而functions 的底层内藏了一个functions, 每个配接器的底层都有封装了一个对象,既然是这个对象的主人,就有资格调用该对象,并在参数和返回值上动手脚。

stl配接器分类

function adapter(通过它们之间的绑定,组合,修饰能力,几乎可以无限制地创造出各种可能的表达式。如使用bind2nd)
container adapter(如queue和stack,这两者底层容器都是deque,修饰deque的接口而成就出另一种容器风貌)
iterator adapter(所谓对迭代器的修饰,只是一种观念上的改变(赋值操作变成插入操作、前进变成后退、绑定到特殊装置上)。如insert iterators,reverse iterators,iostream iterators)


Sigue estudiando y serás una calavera sabia.