当前位置: 首页 > article >正文

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

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

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

#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的投影仪,这台电脑,岂不是不能使用了?

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

        

class VGAToType5Adapter:public VGA
{
public:
	VGAToType5Adapter(Video2* video2) :myvideo(video2)
	{

	}
	~VGAToType5Adapter()
	{
		delete myvideo;
	}
	void play()
	{
		myvideo->play();
	}
private:
	Video2* myvideo;
};


http://www.kler.cn/a/279977.html

相关文章:

  • SQL典型练习题
  • java程序优化
  • Redis哨兵(sentinel)
  • Qt折线图,x轴是时间,y轴是int
  • 数据结构—顺序表
  • 速盾:cdn能防ip追踪吗?
  • 设计模式 5 原型模式
  • 【Material-UI】Radio Group中的 Color 属性详解
  • sqlite3 在Python中使用
  • 在 Windows 上安装 Docker
  • 使用PyTorch AlexNet预训练模型对新数据集进行训练及预测
  • iOS 苹果健康-睡眠
  • docker基础到进阶
  • 【Python机器学习】NLP分词——词干还原的挑战
  • comfyUI好在哪?为啥大家都在用?
  • Facebook AI的应用前景:如何利用人工智能提升平台功能
  • 并行计算的艺术:PyTorch中torch.cuda.nccl的多GPU通信精粹
  • AIM-D100-CA直流绝缘监测仪筑牢电动汽车充电安全防线
  • 电脑硬件知识点详解
  • SFF806A-ASEMI无人机专用SFF806A