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

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

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

显然,这一角色不可以是接口,而必须是具体类。为使客户端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与模式》之适配器模式

    推荐阅读
  • 辽宁妹妹被人欺负(辽宁富家女一顿早饭300块)

    辽宁富家女一顿早饭300块«——【·前言·】——»你能想象15岁的女孩一顿早饭得花300块钱吗?挥金如土的她迷恋各种奢侈品,鞋子基本只穿3次就会扔掉,一星期就得花上万元,甚至因为一些小事和妈妈大打出手刘珈辰和妈妈发生冲突然而她。

  • 四季豆和冬瓜能一起吃吗(四季豆和冬瓜可以放一起吃吗)

    四季豆和冬瓜能一起吃吗冬瓜和四季豆是可以一起吃的,因为它们之间不会影响到身体的健康,在营养成分上也是不存在冲突的,它们还能及时补充人体所需的营养元素。四季豆的味道是比较好的,所以很受大家的喜爱,它不仅味道好,而且营养价值也是很高的,富含多种维生素、矿物质,可以有效地降低体内的胆固醇,促进心血管的健康。当我们身体出现感染的时候,也是可以吃一些四季豆的,从而达到消炎的效果。

  • 食用碱是小苏打吗(食用碱与小苏打有什么区别)

    小苏打小苏打可破坏肉质纤维结构,使肉质松软膨胀,鲜嫩爽滑。

  • 杭州智慧用电火灾监测系统(经济观察遏制待机能耗)

    拔下“偷电”电器的插头,今天小编就来聊一聊关于杭州智慧用电火灾监测系统?在电器没有使用的情况下,一年被“偷”走近1.39亿度电,无疑是一种巨大的浪费。在这样的背景下,拔下“偷电”电器的插头,遏制待机能耗浪费有着较强的现实意义和紧迫性。完善相应待机能耗标准并加强监督,倒逼家电企业通过技术降低待机能耗是遏制待机能耗浪费的现实路径。但这并非强制标准,计划落地效果并不理想。

  • 肖央被埋地下电影(奥斯卡寄生虫女演员竟拍过小苹果MV)

    今年第92届奥斯卡的大赢家韩国电影《寄生虫》不仅夺下了最佳影片,也是亚洲电影上历史的突破,成为了奥斯卡历史上首部非英语的最佳影片。除此之外更是拿下了最佳导演,最佳国际影片,最佳原创剧本,共摘获了4项奥斯卡大奖,成为了当之无愧的大赢家。《小苹果》MV龙套小演员竟摘获今年奥斯卡!而且朴素丹化妆不化妆感觉差距并不是很大,说明底子是真的好。肖央殿堂级押宝绝了声明:文字原创,图片来自网络,如有侵权,联系删除。

  • 微信特别关注怎么设置(如何设置微信特别关注)

    下面更多详细答案一起来看看吧!微信特别关注怎么设置打开手机微信,点击进入。如果想取消,依旧点击好友页面三个点按钮,点击取消星标朋友即可。

  • 精英律师靳东第几集和前女友相遇(刁蛮公主中文蔷竟然是靳东的妹妹)

    她就是由高露饰演的林欢,时隔多年再度重逢,却因各自经历已不相识。让有血缘之亲却难以相认的哥哥庄恕痛苦不已,面对生死,人物复杂的关系和身世让身怀绝技的医生也束手无策。文蔷宰相府二小姐,当今皇上贵妃的妹妹。其实,高露从出道以来,参演了25部电视剧、9部电影,实在是一个高产的演员。

  • 我的前半生里贺涵的职业(里贺涵和唐晶的工作是做什么)

    里贺涵和唐晶的工作是做什么商业分析专业竞争的激烈程度不是特别高,比金融,金融工程的录取要相对容易一些有良好数学与计算机背景的申请者,可以在金融、金融工程等专业之外,再增加一个可以选择的冲刺名校的专业方向《我的前半生》剧中贺涵的。

  • 重度牙周病去哪里治疗好(牙周疾病困扰老年人)

    9月20日是“全国爱牙日”。老年群体是牙齿重点防治对象之一。据南方医科大学口腔医院提供的数据显示,目前老年人在牙体缺损、牙列缺损、牙列缺失上的发病率较高。随着机体老化,支持牙齿的牙周组织发生生理性退化,牙龈退缩,牙槽骨吸收,临床表现牙冠伸长,根颈外露,根分叉暴露,牙齿不同程度松动。数据显示,我国30岁以上人群中85%患有不同程度的牙周病,其中接受治疗者不足20%。

  • 美国糖尿病协会饮食指南(加拿大对比实验)

    最初两周,所有参试者避免摄入富含多酚和膳食纤维的食物和饮料。所有参试者在6周的研究期内限制多酚和膳食纤维的摄入量。研究人员分别于6周前和6周后采集参试者空腹血样,分析血浆生物标志物。另外,吃苹果还使外周血单核细胞分泌的白介素-6和白介素-17分别降低28.3%和11%,使血浆总抗氧化能力增强9.6%。罗宾逊博士表示,新研究结果表明,肥胖超重人群每天吃苹果,是减轻与肥胖相关的慢性炎症的一种有效方法。