本文主要是介绍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;
};
这篇关于C++设计模式6:适配器模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!