配接器

本文介绍了设计模式中的一种——配接器模式,包括其定义、分类及具体应用实例如容器适配器stack和queue、迭代器适配器ReverseIterator等。通过本文,读者能够了解配接器模式如何使不兼容的接口得以合作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

1、配接器其实是一种设计模式

(1)将一个class的接口转换为另一个class的接口
(2)是原本因为接口不兼容而不能合作的classes,可以一起运行

2、分类

(1)容器的配接器
(2)迭代器的配接器
(3)仿函数的配接器

二、容器的配接器

1、stack底层有deque实现


template<class T,class Container=deque<T> >
class stack
{
protected:
Container s;//底层容器
};
思考:为什么stack是容器的配接器
stack类屏蔽了deque的所有对外的接口,只开放了符合stack原则的几个函接口(这些接口是通过deque的接口转换而来的),所以说stack是一个配接器,一个作用于容器之上的配接器

2、queue


template<class T,class Container=deque<T> >
class queue
{
protected:
Container s;//底层容器
};

思考:为什么deque容器的配接器

三、迭代器的配接器

1、ReverseIterator

是屏蔽了Iterator的所有对外的接口,只开放了符合Reverseiterator的几个原则的接口(这些接口是通过Iterator的接口转换而来的)

四、仿函数的配接器

(1)仿函数的配接器可以实现两个函数的合成,例如>和=合成为>=,而+和=合成为+=
(2)可以事项对于函数指针的封装

五、总结

container adapters内藏了一个container member一样,reverse iterator底层内藏了iterator member,而functions 的底层内藏了一个functions,
每个配接器的底层都有封装了一个对象,既然是这个对象的主人,就有资格调用该对象,并在参数和返回值上动手脚
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值