分类信息网站,网站设计公司哪个好,网站点击率多少正常,网站策划方案ppt1.什么是适配器模式#xff1f;
可以将⼀个类的接⼝转换成客户希望的另⼀个接⼝#xff0c;主要⽬的是 充当两个不同接⼝之间的桥梁#xff0c;使得原本接⼝不兼容的类能够⼀起⼯作。
2. 适配器模式的组成
#xff08;1#xff09;接口类#xff0c;给客户端调用
可以将⼀个类的接⼝转换成客户希望的另⼀个接⼝主要⽬的是 充当两个不同接⼝之间的桥梁使得原本接⼝不兼容的类能够⼀起⼯作。
2. 适配器模式的组成
1接口类给客户端调用2被适配者类3适配器类。
3.适配器模式的分类
适配器模式一般分为类适配器模式和对象适配器模式。
1类适配器模式适配器类通过继承适配者类多重继承达到适配目的部分语言可能不支持多重继承如C#。
2对象适配器模式适配器类中存放适配者类的实例对象调用它来达到适配目的该模式较常用。下面的题目我们使用第二种类型来进行求解。
下面我们看一下《大话设计模式》这本书对适配器模式的介绍与实现 不难看出适配器模式的适配器类Adapter继承了原始的客户接口Target并且适配器类Adapter里面包含了一个待适配类的对象重写接口中的虚函数实际调用的是这个对象的功能函数。在使用适配器模式时客户端调用的接口会从原来的target变成现在的Adapter.
4.c实现适配器模式 题目描述
小明购买了一台新电脑该电脑使用 TypeC 接口他已经有了一个USB接口的充电器和数据线为了确保新电脑可以使用现有的USB接口充电器和数据线他购买了一个TypeC到USB的扩展坞。
请你使用适配器模式设计并实现这个扩展坞系统确保小明的新电脑既可以通过扩展坞使用现有的USB接口充电线和数据线也可以使用TypeC接口充电。
输入描述
题目包含多行输入第一行输入一个数字 N 1 N 20)表示后面有N组测试数据。
之后N行都是一个整数1表示使用电脑本身的TypeC接口2表示使用扩展坞的USB接口充电。
输出描述
根据每行输入输出相应的充电信息。
输入示例
3
1
2
1
输出示例
TypeC
USB Adapter
TypeC
代码实现
我们就按照大话设计模式介绍的过程来实现这些功能。代码如下
#includeiostream
using namespace std;//实现接口类(原来的老接口)
class Interface{
public://因为接口类virtual void Charge(){coutTypeCendl;}};//待适配的类
class USB{
public://需要使用适配器进行转换所以打印了USB Adaptervoid USBCharge(){coutUSB Adapterendl;}};//适配器类, 要继承老接口类
class Adapter: public Interface{
public://要包含一个待适配的对象Adapter(){ this-usb new USB(); }~Adapter(){ if(this-usb ! nullptr){delete this-usb;this-usb nullptr;} }//多态完成转换virtual void Charge(){this-usb-USBCharge();}
private: USB* usb ;
};int main(){int N;cinN;//实际在使用适配者模式时新的接口已经变成了适配器Adapter * newInterface new Adapter();while(N--){int choice;cinchoice;if(choice 1){newInterface-Interface::Charge();}else if(choice 2){newInterface-Charge();}}delete newInterface;return 0;
}
因为题目要求还要打印原来的TypeC所以我在红框里使用了继承下来的原始充电方式。 而newInterface-Charge();这行代码就是还原的适配器模式了。 上述内容如有错误之处还请各位小伙伴批评指正此致敬礼
这里也推荐一篇很好的博文将适配器模式讲的很清楚
设计模式之适配器模式(C)_c 设计模式适配器-CSDN博客https://zhaitianbao.blog.csdn.net/article/details/129406741