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.
全部评论

相关推荐

敢逐云霄志:你打招呼语怎么能这么长,hr都没看下去的欲望,简明扼要说重点,就读于某某学校某某专业,26届应届毕业生,学信网可查,先后在某某公司实习过(如有),然后做过什么项目,想找一份什么样的工作,可实习几个月以上,期待您的回复。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务