C++设计模式6:适配器模式

适配器模式的主要目的,是让不兼容的接口可以在一起工作,当我们自己的项目接口与一些第三方库的接口不兼容的时候,就需要用到适配器,或者我们自己重构自己的代码,显然后者的代价比较大。

假如,我们有一种电脑,这个电脑只支持VGA接口,那么它自然而然可以和支持VGA的投影仪一起使用。

cpp 复制代码
#include<iostream>
using namespace std;
class VGA
{
public:
	VGA() {}
	~VGA() {}
	virtual void  play() = 0;
};
class Type5
{
public:
	Type5() {}
	~Type5() {}
	virtual void  play() = 0;
};
class Computer//只支持VGA接口的电脑
{
public:
	Computer() {}
	~Computer() {}
	void playVideo(VGA *vga)
	{
		vga->play();
	}
};
class Video1:public VGA
{
public:
	Video1() {}
	~Video1() {}
	void play()
	{
		cout << "play with VGA" << endl;
	}
};
class Video2 :public Type5
{
public:
	Video2() {}
	~Video2() {}
	void play()
	{
		cout << "play with Type5" << endl;
	}
};
int main()
{
	Computer computer;
	computer.playVideo(new Video1());
	return 0;
}

那对于支持Type5的投影仪,这台电脑,岂不是不能使用了?

要解决这个问题,非常简单,只需要加一个转换头就可以了,这个转换头就是我们的适配器。

cpp 复制代码
class VGAToType5Adapter:public VGA
{
public:
	VGAToType5Adapter(Video2* video2) :myvideo(video2)
	{

	}
	~VGAToType5Adapter()
	{
		delete myvideo;
	}
	void play()
	{
		myvideo->play();
	}
private:
	Video2* myvideo;
};
相关推荐
积跬步DEV1 分钟前
Claude Prompt 汉语新解
开发语言·前端·javascript
虚无火星车12 分钟前
说说停止线程池的执行流程?
java·开发语言
乔以亦14 分钟前
python 装饰器
linux·开发语言·python
计算机学姐19 分钟前
基于python+django+vue的社区爱心养老管理系统
开发语言·vue.js·后端·python·mysql·django·web3.py
V_fanglue370521 分钟前
qmt量化交易策略小白学习笔记第60期【qmt编程之期权数据--基于BS模型计算欧式期权隐含波动率--内置Python】
开发语言·windows·笔记·python·学习·区块链
LB_bei35 分钟前
设计模式-行为型模式-访问者模式
设计模式·访问者模式
汽车电子助手1 小时前
如何制作Vector Vflash中加载的DLL文件--自动解锁刷写过程中27服务
开发语言·单片机·嵌入式硬件
码农不惑1 小时前
如何在C++中使用mupdf操作pdf文件(一)
开发语言·c++·pdf
liangshanbo12151 小时前
JavaScript:页面可见性API
开发语言·前端·javascript
码农超哥同学1 小时前
Python知识点:如何使用Python进行日志处理与分析
开发语言·python·面试·编程