锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

C++ 23种设计模式(6)-适配器模式

时间:2022-12-02 05:30:00 角度传感器适配器的防脱出结构

适配器模式将一个类的接口转换为客户想要的另一个接口,使那些因为接口不兼容而不能一起工作的类可以一起工作。它包括类适配器和对象适配器,本文针对对对象适配器。例如,在STL适配器模式中使用。STL实现了称为双端队列的数据结构(deque),支持插入和删除前后两段。STL在实现栈和队列时,直接使用双端队列而不是从头开始定义它们。双端队列扮演适配器的角色。队列使用后端插入,前端删除。而栈用到了它的后端插入,后端删除。假设栈和队列都是顺序容器,有压入和弹出两种操作。
代码如下:

#include #include using namespace std;  ///双端队列 class Deque { 
        public:  void push_back(int x) { 
        cout << "Deque push_back" << endl; }  void push_front(int x) { 
        cout << "Deque push_front" << endl; }  void pop_back() { 
        cout << "Deque pop_back" << endl; }  void pop_front() { 
        cout << "Deque pop_front" << endl; } }; ///顺序容器 class Sequence { 
        public:  virtual void push(int x) = 0;  virtual void pop() = 0; }; ///栈的父类是顺序容器 使用的方法是双端队列 class Stack : public Sequence { 
        public:  void push(int x) { 
        deque.push_back(x); }
	void pop() { 
        deque.pop_back(); }
private:
	Deque deque; //双端队列
};
//队列的父类是顺序容器 用到的方法是双端队列
class Queue : public Sequence
{ 
       
public:
	void push(int x) { 
        deque.push_back(x); }
	void pop() { 
        deque.pop_front(); }
private:
	Deque deque; //双端队列
};

int main()
{ 
       
	Sequence *s1 = new Stack();
	Sequence *s2 = new Queue();
	s1->push(1); s1->pop();
	s2->push(1); s2->pop();
	delete s1; delete s2;
	getchar();
	return 0;
}

执行结果如下:
在这里插入图片描述

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章