当前位置: 首页 > news >正文

网站做贷款许可证维护官网

网站做贷款许可证,维护官网,苏州的互联网企业,网络游戏开发平台一#xff0c;适配器模式简介 适配器模式是一种结构型设计模式#xff0c;用于将已有接口转换为调用者所期望的另一种接口。 适配器模式让特定的API接口可以适配多种场景。例如#xff0c;现有一个名为Reader()的API接口只能解析txt格式的文件#xff0c;给这…一适配器模式简介 适配器模式是一种结构型设计模式用于将已有接口转换为调用者所期望的另一种接口。 适配器模式让特定的API接口可以适配多种场景。例如现有一个名为Reader()的API接口只能解析txt格式的文件给这个Reader()接口增加适配器以后它可以同时支持xml、json、csv等格式的文件。 适配器是一个特殊的类它可以扩展或者说转接一些特定API接口的功能使得API接口可以被应用到更多对象或数据类型上。 适配器会将适配过程进行封装从而隐藏适配的过程只对外界提供被适配以后的API接口。 适配器在真实世界中的模拟 1.USB转接头实现typec接口转USB。 2.设备网关让ipv4网络与ipv6网络互通。 适配器模式的主要组件 1.目标接口(Target)提供给外部程序的统一接口是外部调用者(client)期望使用的接口。 2.源接口(Adaptee)已经具备一定的功能但是与Target不兼容的接口。它包含了client所需要的功能但是不能被client所使用。 3.适配器(Adapter)对源接口进行适配使得源接口可以像目标接口一样被公共调用。适配器提供了Target的接口实现并通过继承或组合的方式调用了Adaptee的接口。 适配器模式的优点 1.可以实现对现有组件代码的复用。 2.使得不兼容的组件之间可以成功交互。 3.降低了各种接口之间的用法差异。 4.方便集成第三方库或者API。 适配器模式与桥接模式(Bridge Pattern)的区别 两者的用途不同桥接模式的用途是将接口与实现分开适配器模式的用途是修改现有接口从而解决兼容问题。 二适配器模式的应用场景 在开发场景中适配器模式的应用场景有 1.兼容相同业务下的不同接口实现。 2.兼容不同的通信方式比如使用适配器将UDP通信转为内部的共享内存通信。 3.处理代码中不同类之间交互时的兼容问题。 在嵌入式开发场景经常使用的Wrapper也是一种适配器模式。Wrapper是指将传感器等硬件或者操作系统的底层API封装成一种高级接口或者类从而提供给上层应用去调用。 Wrapper可以隐藏底层的具体实现细节使上层应用程序可以更加方便地使用底层接口。例如当嵌入式设备需要读写摄像头数据时我们可以把摄像头提供的SDK封装成一个Wrapper从而简化了调用方式。 不推荐使用适配器的场景 1.原有接口的变动很大的时候。 2.对接口性能要求很高的时候。 3.适配器需要适配的地方过多的时候。 三适配器代码样例 1.UML类图 Adapter类继承了Target类并重写了Target类的request接口Adapter类实现request接口的时候调用了Adaptee类提供的specificRequest接口。 整体上相当于Adapter类为Adaptee类的specificRequest接口做了适配。 2.代码实现 #include iostream //目标接口 class Target { public:virtual void request() 0; }; //源接口 class Adaptee { public:void specificRequest(){std::cout Adaptee specific request std::endl;} }; //被适配后的源接口 class Adapter : public Target { public:Adapter(Adaptee* adaptee) : m_adaptee(adaptee) {}void request() override{m_adaptee-specificRequest();} private:Adaptee* m_adaptee; }; int main() {Adaptee* adaptee new Adaptee();Target* target new Adapter(adaptee);target-request();return 0; } 运行结果  Adaptee specific request 四适配器模式的分类 1.类适配器 类适配器以类继承的方式适配不兼容的源接口。 C语法支持继承自多个父类钻石继承适配器同时继承了目标接口和源接口从而使得源接口的函数可以被目标接口所调用。 2.对象适配器 对象适配器以对象组合的方式适配不兼容的源接口。所谓的对象组合是指在一个对象内部调用另一个对象的成员函数。 对象适配器中包含了源接口的实例对象对象适配器的可扩展性更好方便加入新的功能进行适配。 五代码实战 Demo1:   适配了咖啡机和榨汁机的饮料机采用对象适配器实现。 #include iostream #include functionalclass Beverage { public:virtual void getBeverage() 0; };class CoffeeMaker { public:CoffeeMaker() default;void Brew() {std::cout Brewing coffee std::endl;} };class JuiceMaker { public:JuiceMaker() default;void Squeeze() {std::cout Squeezeing Juice std::endl;} };class Adapter : Beverage { private:std::functionvoid() m_request; public:Adapter(CoffeeMaker* cm){ m_request [cm]() { cm-Brew(); };}Adapter(JuiceMaker* jm) { m_request [jm]() { jm-Squeeze(); }; }//对外公共接口void getBeverage() { m_request(); } };int main() {CoffeeMaker* CM new CoffeeMaker();Adapter coffee(CM);coffee.getBeverage();JuiceMaker* JM new JuiceMaker();Adapter juice(JM);juice.getBeverage();return 0; } 运行结果  Brewing coffee Squeezeing Juice Demo2:  类适配器与对象适配器代码对比 #include iostream//目标接口 class Target { public:virtual void Request() 0; };//源接口 class Adaptee { public:void SpecificRequest() {std::cout Adaptee output. std::endl;} };//对象适配器 class ObjectAdapter : public Target { public://源接口的实例化ObjectAdapter(Adaptee* adaptee) : m_adaptee(adaptee) {}void Request() override {std::cout From ObjectAdapter: ;m_adaptee-SpecificRequest();} private:Adaptee* m_adaptee; };//类适配器 //钻石继承 class ClassAdapter : public Target, private Adaptee { public:void Request() override {std::cout From ClassAdapter: ;SpecificRequest();} };int main() {Adaptee* adaptee new Adaptee();ObjectAdapter* adapter_1 new ObjectAdapter(adaptee);ClassAdapter* adapter_2 new ClassAdapter();adapter_1-Request();adapter_2-Request();return 0; }运行结果 From ObjectAdapter: Adaptee output. From ClassAdapter: Adaptee output. 六参考阅读 https://refactoring.guru/design-patterns/adapter https://www.geeksforgeeks.org/adapter-pattern-c-design-patterns/
http://www.hkea.cn/news/14400181/

相关文章:

  • 网站建设综合技术设计官网费用
  • 大型高迸发网站用什么语言做遂宁商城网站建设
  • 经典 网站海南千筑建设工程有限公司网站
  • 丹阳建站免费源码分享
  • 郑州网站外包公司龙岩网络施工公司
  • 电子商务网站业务流程分析免费空间怎么搞网站
  • 建设河南分行网站免费推广网址注册
  • 在百度上怎么建网站wordpress文章图片没src地址
  • html网站开发中的应用爱站网是干什么的
  • 东莞网站建设 旅游双减之下托管班合法吗
  • 深圳做网站的网络公碳晶板装修多少钱一平方
  • wordpress动漫主题曲无锡seo关键词排名
  • 壹互联是网站公司吗云南昆明做网站
  • 做网站毕业设计能过吗浙江高端建设网站
  • 青岛做网站哪家好夏天做哪些网站致富
  • 做网站用的软件是什么了免费电子版个人简历可编辑
  • 网站的竞品分析怎么做公司注销后网站备案
  • 百度推广账号出售搜索引擎关键词优化技巧
  • 推广seo网站的公司如何上传自己的做的网站
  • 这几年做哪个网站能致富保定网站seo
  • 在百度云上建设网站wordpress虚拟3d网站
  • 大型网站seo方案云南营销型网站建设
  • 哪些php网站网站建设中 尽情期待
  • 跆拳道东莞网站建设如何建网站不花钱
  • 夏天做那个网站能致富mysql开发网站开发
  • 想做个网站不知道做什么wordpress怎么找到作者的分类标签
  • php网站开发案例教程 dvdqq空间可以做网站吗
  • 怎样制作个人网站老网站如何做301重定向新网站
  • 专门做字体设计的网站软件下载网站排行榜前十名
  • 国和建设集团网站新手学做网站相关书籍