百摩网
当前位置: 首页 生活百科

适配器模式遵循什么设计模式(一篇文章搞懂程序设计模式中的适配器模式)

时间:2023-05-26 作者: 小编 阅读量: 5 栏目名: 生活百科

显然,这一角色不可以是接口,而必须是具体类。为使客户端Client能够使用Adaptee类,提供一个中间环节,即类Adapter,把Adaptee的API与Target类的API衔接起来。Adapter与Adaptee是委派关系,这决定了适配器模式是对象适配器。所以适配器模式不适合在详细设计阶段使用它,它是一种补偿模式,专用来在系统后期扩展、修改时所用。

适配器模式遵循什么设计模式?适配器模式: 将一个类的接口转换成客户希望的另外一个接口Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作(选自: 《大话设计模式》),今天小编就来聊一聊关于适配器模式遵循什么设计模式?接下来我们就一起去研究一下吧!

适配器模式遵循什么设计模式

相关概念:

适配器模式: 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作(选自: 《大话设计模式》)

适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在。(选自:Java设计模式之《适配器模式》及应用场景)

适配器的主要作用是在新接口和老接口之间进行适配

应用场景:

①想使用一个已存在的类,但是该类不符合接口需求;

②需要创建一个可重用的类,适配没有提供合适接口的其他类。

③如果一个类要实现一个具有很多抽象方法的接口,但是本身只需要实现接口中的部分方法便可以达成目的,所以此时就需要一个中间的过渡类,但此过渡类又不希望直接使用,所以将此类定义为抽象类最为合适,再让以后的子类直接继承该抽象类便可选择性的覆写所需要的方法,而此抽象类便是适配器类(不想实现接口中的所有方法)

适配器模式分类

模式所涉及的角色有:

目标(Target)角色:这就是所期待得到的接口。注意:由于这里讨论的是类适配器模式,因此目标不可以是类。

源(Adapee)角色:现在需要适配的接口。

适配器(Adaper)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口。显然,这一角色不可以是接口,而必须是具体类。

①类适配器模式:

解释: 在上图中可以看出,Adaptee类并没有Request()方法,而客户端Client则期待这个方法。为使客户端Client能够使用Adaptee类,提供一个中间环节,即类Adapter,把Adaptee的API与Target类的API衔接起来。AdapterAdaptee是继承关系,这决定了这个适配器模式是类适配器。

代码:

客户端期待调用的接口

需要适配的方法

通过继承待适配的类Adaptee,同时实现Target接口来重写request()

创建一个适配器,调用适配器的request方法,实际最后调用的是specificRequest()

①对象适配器模式:

解释:从上图可以看出,Adaptee类并没有Request()方法,而客户端则期待这个方法。为使客户端能够使用Adaptee类,需要提供一个包装(Wrapper)类Adapter。这个包装类包装了一个Adaptee的实例,从而此包装类能够把Adaptee的API与Target类的API衔接起来。Adapter与Adaptee是委派关系,这决定了适配器模式是对象适配器。

代码:

客户端期待调用的接口

需要适配的方法

适配器类,通过包装了一个Adaptee实例来调用specificRequest()

创建一个适配器,并传入一个需要适配的类的实例,然后调用适配器重写的方法request()

总结:

区别:对象的适配器模式不是使用继承关系连接到Adaptee类,而是使用委派关系连接到Adaptee类。

优点:

复用性:系统需要使用现有的类,而此类的接口不符合系统的需要。那么通过适配器模式就可以让这些功能得到更好的复用

扩展性:在实现适配器功能的时候,可以自由调用自己开发的功能,从而自然地扩展系统的功能。

缺点:

过多的使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是A接口,其实内部被适配成了B接口的实现。所以适配器模式不适合在详细设计阶段使用它,它是一种补偿模式,专用来在系统后期扩展、修改时所用。

适用场景:

1、已经存在的类的接口不符合我们的需求;

2、创建一个可以复用的类,使得该类可以与其他不相关的类或不可预见的类协同工作;

3、使用一些已经存在的子类而不需要对其进行子类化来匹配接口。

4、旧的系统开发的类已经实现了一些功能,但是客户端却只能以另外接口的形式访问,但我们不希望手动更改原有类的时候。

注意:

适配器模式不适合在详细设计阶段使用它,它是一种补偿模式,专用来在系统后期扩展、修改时所用,适配器模式更像是一种补救措施

参考文献:《大话设计模式》 《Java知音》 博客园文章:《设计模式:适配器模式》《JAVA与模式》之适配器模式

    推荐阅读
  • 小米m2001g7ac是什么型号手机(这手机有人用过吗)

    请关注我们,为您每天更新手机比选、价格、评测信息,谢谢!请点击右上角的关注。

  • 高中学生英语考试技巧(高中英语考试技巧有哪些)

    短文填空题和短文改错题真的是基础题和送分题首先,考到的语法现象很简单,较难的语法也就是:非谓语动词,介词+which这类引导词所以,在三年的高中学习过程中,这两部分常考的语法一定一定要弄的透透的,因为这部分是你自己完全可以掌控的,现在小编就来说说关于高中学生英语考试技巧?首先,考到的语法现象很简单,较难的语法也就是:非谓语动词,介词+which这类引导词。

  • 斑马英语和gkid英语哪个比较好(VIPKID和斑马英语哪个更好)

    今天老家的一个妹妹来问我,宝贝4岁了,想给报个英语班,想知道VIPKID和斑马英语哪个好一些。(如果是对价格无感,报VIPKID也有实力每周多次上课的家庭,那自然随意。)2.斑马英语,对于激发低龄初学者的兴趣是有优势的,包含了动画片,小朋友嘛,对动画片都是喜欢的。当然,VIPKID也可以每天都约课,问题是斑马年课也才2000多块钱,VIPKID要是每天上课的话,一个月就要超这个数了。

  • 你是我兄弟中的小玉是谁扮演的(金阳出演爱情万万岁变身凯丽霸道小姑子)

    其中也有一段和沈傲君大吵大闹的情节,与该剧有类似之处。笔者获悉,《爱情万万岁》以老少两代人的情感生活为主线,讲述了发生在一个都市大家庭的一家四口人各不相同的感情故事。老中青集体追爱,集合温情、搞笑、催泪等于一体的剧情设定,让不少的网友将《爱情万万岁》称为国人追爱宝典。

  • 社科类课题申报书模板(社科项目的申报)

    主要包括国家社会科学基金项目、教育部人文社会科学研究项目、省社会科学项目、市社会科学项目、校社会科学项目以及各类社会科学研究专项项目。项目过程和结题管理规范,管理制度上采取教育部、教育厅、学校三级管理模式。评审结果以分数的形式为主,学科组评审的目的是对学科组各申报项目进行量分、排序。值得注意的是,公示不等于正式立项,公示不能作为项目立项依据。

  • 酒店gsm是什么职位(酒店gsm的解释)

    跟着小编一起来看一看吧!酒店gsm是什么职位酒店gsm是服务经理职位,代表酒店全权处理宾客投诉、宾客生命安全及财产赔偿的复杂事项。GSM是站在酒店利益的立场上机智、果断、敏捷地处理各项问题,是酒店的最高权力机构的指挥者,另外协助前厅部经理直接管辖前厅各分部的业务操作。

  • LOLs3云顶之奕阵容搭配(阵容搭配推荐)

    我们一起去了解并探讨一下这个问题吧!LOLs3云顶之奕阵容搭配6星守4法师:英雄:辛德拉、妮蔻、波比、佐伊、阿狸、露露、索拉卡、维克兹。共提供60法力值。4/4法师:所有友方获得法术强度提升。2/2圣盾使们在每次施放技能时都会为自己提供一个持续4秒的护盾。这个护盾不会叠加。

  • 铡美案全本上集(漫世界戏情墨趣)

    秦香莲久无陈世美音讯,携子上京寻夫,但陈世美不肯与其相认,并派韩琪半夜追杀。韩琪不忍下手只好自尽以求义,秦香莲反被误为凶手入狱。在陈世美的授意下,秦香莲被发配边疆,半途中官差奉命杀她,幸为展昭所救。展昭至陈世美家乡寻得人证祺家夫妇,半途上祺大娘死于杀手刀下,包拯找得人证物证,欲定驸马之罪,公主与太后皆赶至阻挡,但包拯终将陈世美送上龙头铡。

  • 摩羯座最容易对什么星座一见钟情(最适合摩羯座的3大星座)

    摩羯座木讷,稳重,总是不动声色中可以将事情做好。摩羯座虽然不浪漫,却是一个实实在在的行动派,他可能不会花言巧语,却能用实际行动守护着天蝎座。金牛座与摩羯座最大的共性是沉着稳重。不过爱情里的金牛座是温柔的,摩羯座相对来说是理智的。双鱼座久而久之也会沉醉于摩羯座所给的安全感之中,互补的性格恰成了完美的和谐。摩羯座的爱情是专一而深情的。

  • 为什么癌症一发现就是晚期(为什么癌症一发现就是晚期就一个月的存活期)

    但是肝脏中不存在痛觉神经,只有当肝脏受到癌细胞损害,导致肿大、硬化、腹水,触及到带有痛觉神经的肝膜时,才会引起警惕,而此时大多属于肝癌晚期。但是胃癌的早期症状并不明显,甚至可以说是没有症状。