前言
设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
一、适配器模式
在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
二、使用步骤
1.引入库
代码如下(示例):
class VGA //VGA接口类
{
public:
virtual void play() = 0;
string getType()const { return "VGA"; }
};
//TV01表示支持VGA接口的投影仪
class TV01 : public VGA
{
public:
void play()
{
cout << "通过VGA接口连接投影仪,进行视频播放" << endl;
}
};
//实现一个电脑类 只支持VGA接口
class Computer
{
public:
//由于电脑只支持VGA接口,所有该方法的参数也只能支持VGA接口的指针/引用
void playVideo(VGA* pvga)
{
pvga->play();
}
};
//进了一批新的投影仪,但是新的投影仪都只支持HDMI接口
class HDMI
{
public:
virtual void play() = 0;
};
class TV02 :public HDMI
{
public:
void play()
{
cout << "通过HDMI接口连接投影仪,进行视频播放" << endl;
}
private:
};
//由于电脑(VGA接口)和投影仪(HDMI)无法直接相连,所以需要添加适配器类
class VGAToHDMIAdatpter : public VGA
{
public:
VGAToHDMIAdatpter(HDMI* p):phdmi(p){}
void play()//该方法相当于就是转换头,做不同接口的信号转换的
{
phdmi->play();
}
private:
HDMI* phdmi;
};
int main()
{
Computer computer;
computer.playVideo(new VGAToHDMIAdatpter(new TV02()));
return 0;
}
总结
主要实现了适配器模式