C++设计模式——适配器模式

适配器模式

适配器模式其实主要就是在原有接口和现有接口不匹配的情况下去增加一个适配器类,匹配两种不同的接口。

比如说:投影仪Project有VAG和HDMI以及Type-C等多种接口,在前些年,投影仪和电脑的接口都是VAG,无疑,直接连接就可:

class VGA
{
public:
	virtual void play() = 0;
	string getType() const { return "VGA"; }
};

//投影仪
class Project :public VGA
{
public:
	void play() { cout << "play the movie by VGA" << endl; }
};

//电脑
class MsiComputer
{
public:
	void PlayMovie(VGA* pVGA)
	{
		pVGA->play();
	}
};

int main()
{
	MsiComputer computer;
	computer.PlayMovie(new Project());
}

但是,随着技术的发展,有了新的接口,和原来的电脑不适配了,咋整。买新的呗!对,买新的是一种好方法,但是你得有钱,买新电脑就是重构,最好但是花时间。

对于我们这些穷人来说,买个转接口是最好的方法,适配器通过继承自原有的接口,调动内部所存在新接口的方法,然后提供给电脑一个原有的接口!

//新投影仪 只支持HDMI接口
class HDMI
{
public:
	virtual void play() = 0;
	string getType() const { return "VGA"; }
};
//投影仪
class NewProject :public HDMI
{
public:
	void play() { cout << "play the movie by HDMI" << endl; }
};

class VGAToHDMIAdapter :public VGA
{
public:
	VGAToHDMIAdapter(HDMI* p) :pHDMI_(p) {}

	void play()
	{
		pHDMI_->play();
	}
private:
	HDMI* pHDMI_;
};

int main()
{
	MsiComputer computer;
	computer.PlayMovie(new VGAToHDMIAdapter(new NewProject()));
}

参考文献

[1] 施磊.C++高级.图论科技.2020.7.
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shenmingik

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值