范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

23种Java设计模式系列适配器模式定义模型以及应用场景详解

  适配器模式无论是在生活中的场景还是框架的底层代码实现里都有大量的运用,属于结构型模式比较常用的,需要重点掌握@mikechen适配器模式的定义
  适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
  在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配(转换)。
  比如:美版和港版电脑的插头与国行不一样,所以我们需要更换电源适配器,或者增加一个转换插头来解决问题。
  适配器模式的模型
  适配器模式(Adapter)包含以下主要角色:
  1.目标(Target)接口
  当前系统业务所期待的接口,它可以是抽象类或接口。2.适配者(Adaptee)类
  它是被访问和适配的现存组件库中的组件接口。3.适配器(Adapter)类
  它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。适配器模式的实现
  1.对象适配器1)创建目标接口package com.mikechen.java.design.adapter.model.objectadapter;  /**  * 目标接口  *  * @author mikechen  */ public interface Target {     //源类有此方法     void sampleOperation1();      //源类无此方法     void sampleOperation2(); } 2)创建被适配的类package com.mikechen.java.design.adapter.model.objectadapter;  /**  * 被适配的类  *  * @author mikechen  */ public class Adaptee {     //源类有此方法     public void sampleOperation1(){} } 3)创建适配器package com.mikechen.java.design.adapter.model.objectadapter;  /**  * 适配器  *  * @author mikechen  */ public class Adapter implements Target {     //源     private Adaptee adaptee;      public Adapter(Adaptee adaptee) {         super();         this.adaptee = adaptee;     }      /**      * 源类Adaptee有方法sampleOperation1      * 因此适配器类直接委派即可      */     @Override     public void sampleOperation1() {         adaptee.sampleOperation1();     }      /**      * 源类没有此方法      * 适配器类补充此方法      */     @Override     public void sampleOperation2() {         //重写方法     } } 2.类适配器1)创建目标接口package com.mikechen.java.design.adapter.model.classadapter;  /**  * 目标接口  *  * @author mikechen  */ public interface Target {     //这是源类Adaptee也有的方法     void sampleOperation1();      //这是源类Adapteee没有的方法     void sampleOperation2(); } 2)创建被适配的类package com.mikechen.java.design.adapter.model.classadapter;  /**  * 被适配的类  *  * @author mikechen  */ public class Adaptee {     public void sampleOperation1(){} } 3)创建适配器package com.mikechen.java.design.adapter.model.classadapter;  /**  * 适配器  *  * @author mikechen  */ public class Adapter extends Adaptee implements Target {      /**      * 源类没有方法sampleOperation2,      * 因此适配器类补充上这个方法      */     @Override     public void sampleOperation2() {         //重写方法     } } 适配器模式的优缺
  1.优点1)更好的复用性
  系统需要使用现有的类,而此类的接口不符合系统的需要,那么通过适配器模式就可以让这些功能得到更好的复用。2)透明、简单
  客户端可以调用同一接口,因而对客户端来说是透明的。3)更好的扩展性
  在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。4)解耦性
  将目标类和适配者类解耦,通过引入一个适配器类重用现有的适配者类,而无需修改原有代码。5)符合开放-关闭原则
  同一个适配器可以把适配者类和它的子类都适配到目标接口,可以为不同的目标接口实现不同的适配器,而不需要修改待适配类。2.缺点
  过多的使用适配器,会让系统非常零乱,不易整体进行把握。适配器模式的应用场景
  1.封装有缺陷的接口设计
  假设我们依赖的外部系统在接口设计方面有缺陷(比如包含大量静态方法),引入之后会影响到我们自身代码的可测试性。
  为了隔离设计上的缺陷,我们希望对外部系统提供的接口进行二次封装,抽象出更好的接口设计,这个时候就可以使用适配器模式了。2.统一多个类的接口设计
  某个功能的实现依赖多个外部系统,通过适配器模式,将它们的接口适配为统一的接口定义,然后我们就可以使用多态的特性来复用代码逻辑。3.替换依赖的外部系统
  把项目中依赖的一个外部系统替换为另一个外部系统的时候,利用适配器模式,可以减少对代码的改动。4.兼容老版本接口
  在做版本升级的时候,对于一些要废弃的接口,不直接将其删除,而是暂时保留,并且标注为 deprecated,并将内部实现逻辑委托为新的接口实现。
  这样做的好处是,让使用它的项目有个过渡期,而不是强制进行代码修改,这也可以粗略地看作适配器模式的一个应用场景。5.适配不同格式的数据
  适配器模式主要用于接口的适配,实际上,它还可以用在不同格式的数据之间的适配。
  比如,把不同格式的数据,统一为相同的格式, 也可以看作一种数据适配器,以方便存储和使用。
  更多架构技术干货,私信【架构】即可查看我原创的300期+BAT架构技术系列文章与1000+大厂面试题答案合集。

蜗居需要吸尘器不需要扫地机,罗永浩直播首款吸尘器Z11Pro评测动清洁卫生已不适合社会发展也不适应城市快节奏的生活方式,为减轻日常清洁工作量,智能扫地机成为热门的数码家居产品,但是对于蜗居在各城市的朋友来说智能扫地机并不适合他们,狭小的居室扫地乌镇论道互联网企业社会责任中国移动咪咕5G塑造网络文化新风尚2021年世界互联网大会乌镇峰会近日在浙江省桐乡市乌镇开幕,主题为迈向数字文明新时代携手构建网络空间命运共同体,由国家互联网信息办公室和浙江省人民政府共同主办。作为国有互联网企业代中国移动高同庆构建智慧赋能新范式,共筑数智经济新未来9月27日,中国移动副总经理高同庆在2021世界互联网大会乌镇峰会人工智能分论坛作了构建智慧赋能新范式共筑数智经济新未来的发言。回顾世界信息技术发展历程,经济社会的发展脉络也跃然眼中国移动与浦发银行签署新一轮战略合作协议9月24日,中国移动与浦发银行在上海签署新一轮战略合作协议,中国移动董事长杨杰和总会计师李荣华,浦发银行董事长郑杨出席签约仪式。中国移动总经理董昕浦发银行行长潘卫东分别代表双方签署中国移动与国家林草局签署战略合作协议10月13日,国际减灾日,中国移动通信集团有限公司(以下简称中国移动)与国家林业和草原局(以下简称国家林草局)在京举行战略合作协议签约仪式。国家林草局副局长李树铭中国移动副总经理赵华为丁耘共建绿色5G网络,迈向低碳未来2021年10月14日,在2021全球移动宽带论坛(GlobalMBBForum)期间,华为常务董事运营商BG总裁丁耘发表了题为共建绿色5G网络,迈向低碳未来的主题演讲。丁耘指出,不想女朋友被搭讪,送她一面FITMORE健身镜运动健身已成为当今养生的一种方式,有人爱户外的无拘束,有人喜欢健身房打卡式的。不过户外活动比健身房少了一个乐趣,就是健身房很方便小伙伴们互动,聊天交友。也正是因为健身房容易和别人搭城市陪跑精英,咕咚X3RE精英版值不值得买咕咚运动终于推出专业级智能运动手表咕咚X3RE。咕咚X3RE为咕咚X3精英版,官方宣传X3RE性能晋升到专业级水平,算是填补了咕咚手表无专业级别的空白,同时也为很多想配备专业运动手ANT27TQC显示器测评144Hz刷新率2K分辨率,电竞中轻松占据先机孤岛惊魂在全球火爆时,电竞玩家纷纷想要在游戏中大显身手,可是如何才能够避免落地成盒呢?当然需要硬核的硬件支撑,作为第一人称的动作射击游戏,不仅需要玩家的灵敏反应能力,同时还要求流畅以健身之名,拨草评测咕咚高颜值智能小白鞋无论有没有疫情,坚持运动准没错,本来已渐渐疏远跑步这项运动,最近又开始动呲哒呲,只因拨草了一对颜值超高的智能跑鞋,除了跑步时穿,日常生活压街穿着也超帅,回头率绝绝的。它就是咕咚运动蚂蚁电竞ANT27TQC,144Hz高刷1ms响应,畅享显示器界的爱马仕手游已不能满足很多玩家的需求,很多伙伴更倾向于电竞游戏,大屏视野感强,流畅不卡顿的高清细腻画质,让很多伙伴爱上电竞。但普通显示器画面会出现延迟残影等情况,影响我们的电竞体验。如何才
作为摄影爱好者,你对于相机的镜头有没有原厂情结呢?为什么?原厂镜头是为原厂相机设计的,各种指标参数均符合严格要求,来不得半点马虎。缺点是售价高。应该说我对相机镜头的原厂情结不是很深,却对几款镜头情有独钟,非原厂镜头不入。其实,更多的时候,2022超实用的5个小米手机技巧,你使用过几个?问大家一个问题,你觉得小米手机中有多少个超实用的技巧,又用过多少个?这里分享5个超实用的小米手机技巧,你使用过几个?1传送门华为手机的智慧识屏功能,想必大家多少都会有一点了解,只要手机手表耳机三件套怎么买才划算?这份攻略帮你省几百块如今,手机手表耳机三件套已经成为不少用户的新标配,大家在选择三件套配置时,也往往会更青睐于选择一个品牌,这是因为品牌内部的产品适配性更高,连接交互时更加直接方便。不过,纵使同一品牌2022将会发布的三款旗舰手机,苹果华为堪称神仙打架相信很多小伙伴在新年来临之际都想换手机,但2022年这三款旗舰手机即将发布,手机还能用得再等等。第一款华为Mate50Pro华为Mate50Pro相信有很多华为党在等,看完配置我直惠普840g5风扇故障解决小记惠普840g5笔记本用了三年多了,各项功能都非常满意。去年下半年以来笔记本风扇突然噪声变大从间断地转到不停狂转,非常令人心烦。我开始寻求各种解决方案,看了网上的一些评论,很多反映这为什么说华为芯片的断供是近些年手机界最大的遗憾?确实非常遗憾!一个国产手机品牌超越苹果的势头就这样被断送了。2020年是华为手机发展的分水岭。2020年之前苹果在中国市场已经被压到喘不过气了,手机出货量逐年萎缩2015年5838诺基亚G11和G21官图曝光,预计将在近期发布IT之家2月6日消息,前几天有网友发现诺基亚新机G21现已出现在Geekbench跑分平台,搭载了紫光展锐T606处理器。现在爆料者RolandQuandt放出了诺基亚G11和G2曝光支持5G网络新机华为P60,华为P40即将跌至白菜价,网友惊喜曝光将于2022年上半年归来拍照机皇华为P60系列新机在硬件配置上将会有所突破,曝光将于2022年上半年归来拍照机皇华为P60系列新机其中5G射频技术问题会得到解决,曝光将于202小屏市场重燃战火,小米12mini曝光,或全面阻击iPhoneSE3iPhone12mini再次掀起了小屏旗舰的热潮,去年包括三星,魅族,小米也都纷纷推出了小屏旗舰。纵观去年的小屏旗舰,苹果存在感很低,三星和魅族的小屏旗舰配置整体还是很不错的,但是手机每天关机一次,到底好不好?可能很多人都有给手机定时关机的习惯,觉得这样做可以延长手机寿命。但也有些人是一用到底的,手机没电就去充电,是不会手动给手机关机的。那么,手机每天关机一次到底好不好?直到听完手机店员头条上的文字创作,你们是直接在手机上打字,还是在电脑上打字?我在头条上的文字创作,既不是用手机直接打字,也不是用电脑打字,而是借助微信中的语音功能。我是2019年11月,无意入住今日头条的。第一篇做的是悟空问答,开始直接在手机屏幕上用拼音打