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

专为男人做的网站无锡兼职做网站

专为男人做的网站,无锡兼职做网站,seo精准培训课程,wordpress怎样更换主题Adapter适配器模式是一种结构设计模式,用于解决接口不兼容的问题,通过适配器类,可以将一个类的接口转换为客户渴望的另一个接口,从而使原来无法协作的对象能够一起工作。 角色和职责: 目标接口(Target&…

Adapter适配器模式是一种结构设计模式,用于解决接口不兼容的问题,通过适配器类,可以将一个类的接口转换为客户渴望的另一个接口,从而使原来无法协作的对象能够一起工作。

角色和职责:
目标接口(Target):定义客户希望使用的接口。
被适配者(Adaptee):需要适配的类或接口,其方法不符合客户的需求。
适配器(Adapter):实现目标接口

优点:
复用性:可以在不修改原有代码的情况下复用现有类。
灵活性:通过适配器,可以轻松支持新的接口或类。
符合开闭原则:扩展功能时,无需修改原有代码,只需增加新的适配器类。

缺点:
复杂性:增加了系统的复杂性,需要维护适配器类。
性能开销:适配器类可能会引入额外的性能开销。

应用场景:
第三方库集成:当需要使用第三方库但其接口不符合项目需求时,可以使用适配器模式。
旧系统改造:在改造旧系统时,可以使用适配器模式将旧接口适配为新接口。
不同数据库适配:在需要使用不同数据库时,可以通过适配器模式统一接口。

适配器模式从实现方式上可以分为两种:类适配器和对象适配器。它们的区别主要在于实现方法和适用情况的不同。

类适配器

定义:类适配器通过继承被适配类(Adaptee)并实现目标接口(Target)来实现适配。它利用继承关系,将被适配类的接口转换为目标接口。

实现方式:
适配器类直接继承被适配类。
适配器类实现目标接口,并重写目标接口中的方法,将调用转换为被适配类的方法调用。

优点:
直接继承被适配类,复用性强。
可以重定义被适配类的部分行为。

缺点:
由于继承关系,适配器类与被适配类之间耦合度较高,难以处理被适配类的子类。
不支持多个被适配类的适配,因为一个类只能继承一个父类。

适用场景:
需要复用被适配类的部分实现。
被适配类没有子类,或者适配器不需要处理被适配类的子类。

对象适配器

定义:对象适配器通过组合的方式,将被适配类(Adaptee)作为成员变量,并实现目标接口(Target)。它利用对象组合关系,动态地将被适配类的接口转换为目标接口。

实现方式:
适配器类包含一个被适配类的引用。
适配器类实现目标接口,并重写目标接口中的方法,将调用委托给被适配类的方法。

优点:
灵活性高,可以适配多个不同的被适配类。
支持被适配类及其子类的适配,因为组合关系不依赖于继承。
符合“合成复用原则”,即优先使用组合而不是继承。

缺点:
需要引入额外的引用,可能增加系统复杂性。
重定义被适配类的行为较为困难,需要定义被适配类的子类。

适用场景:
需要适配多个不同的被适配类。
被适配类有子类,且适配器需要处理这些子类。

在这里插入图片描述

类适配器模式

// 目标接口
class Target {
public:// 纯虚函数,模拟 Java 接口的抽象方法virtual void request() = 0;// 虚析构函数,确保正确释放派生类对象virtual ~Target() {}
};// 被适配类
class Adaptee {
public:void specificRequest() {std::cout << "特殊请求" << std::endl;}
};// 类适配器:继承Adaptee并实现Target接口
class ClassAdapter : public Adaptee, public Target {
public:// 实现Target接口的request方法void request() override {specificRequest();}
};

对象适配器模式

// 目标接口
class Target {
public:// 纯虚函数,模拟 Java 接口的抽象方法virtual void request() = 0;// 虚析构函数,确保正确释放派生类对象virtual ~Target() {}
};// 被适配类
class Adaptee {
public:void specificRequest() {std::cout << "特殊请求" << std::endl;}
};// 对象适配器:组合Adaptee并实现Target接口
class ObjectAdapter : public Target {
private:Adaptee* adaptee;
public:ObjectAdapter(Adaptee* adaptee) : adaptee(adaptee) {}// 实现Target接口的request方法void request() override {adaptee->specificRequest();}// 析构函数~ObjectAdapter() {// 这里不删除 adaptee,因为它可能由外部管理}
};
http://www.dtcms.com/wzjs/566180.html

相关文章:

  • 购物网站做兼职网站的中英文切换怎么做的
  • 知乎做笔记的网站大学生创业50个小案例
  • 网站设计网页设计公司网上推广
  • 网站颜色背景代码wordpress外贸源码
  • 网站怎么找回密码杭州滨江网站开发
  • 网站建设的专业知识素材下载网站源码
  • 烟台哪家公司可以做网站为什么点不开网站
  • 怎么用ajax做电商网站住房和城乡建设部执业资格注册中心网站
  • iis网站建设中电子商务网站建设的基本构成
  • 海口网站网站建设云南公司建网站多少钱
  • 小程序店铺怎么开wordpress速度优化版
  • 网站做外链好嘛网站表单及商品列表详情模板
  • 关于网站建设费用的报告wordpress交易主题
  • 网站建设需要什么资料asp做网站的优势是什么
  • 紫金银行网站优质网站有哪些
  • 网站产品后台界面怎么做做网站什么公司好
  • 德州购物网站建设小型门户网站建设硬件配置
  • 企业网站推广网站一线互联网公司有哪些
  • 清河网站建设电话wordpress single.php制作
  • 网站 建设ppt模板做一个app需要什么条件
  • 做网站美工 电脑配件要多大微信如何申请小程序商店
  • php网站开发语言的优点泰安10大首富
  • 做图表的网站知乎南山区住房与建设局官方网站
  • 女生在建筑公司的职位天津seo推广优化
  • 什么样的网站需要备案学生个人博客网站模板
  • 专业网站建设新闻sakai wordpress
  • 自己做网站优化网站产品图怎么做
  • 招商网站开发西安十大网络公司排名
  • 平板网站开发环境做自己的网站的一般步骤
  • 有没有做古装衣服的网站网站后台管理系统是用什么做的