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

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+大厂面试题答案合集。

关于客厅瓷砖,这届年轻人有自己独特的搭配手法瓷砖这物件,往简单地说,就是单纯的地面材料往复杂了说,其实是调整空间氛围及提升美感的装饰核心。以客厅为例,它与瓷砖的搭配有颇多讲究,像工业风配水泥砖轻奢风配大理石砖等等,均有一套既解析国产特斯拉ModelY白车身完美的一体压铸最好的安全性能关注并标星电动星球News每天打卡阅读更深刻理解汽车产业变革出品电动星球News作者毓肥几个小时前,我们在位于广州市番禺区的特斯拉龙美服务中心,第一次看到了国产ModelY的白车身华为Mate40系列发布,超美曲面屏,独特星环设计相信有关注过数码圈的用户都了解,昨天华为品牌新品在上海正式发布,这款手机的正式亮相,许多的网友都对此表示期待,华为这场发布会总共包括四款旗舰机,分别是华为Mate40华为Mate4品牌调性不输BBA,捷豹XFL的独特气质,已降到30万内在很多很的印象中,BBA自带豪门属性,级别越高,这种意思就越明显,其实在BBA之外也有很多格调很高的品牌,在某些层面甚至比BBA还要高级,捷豹应该算一个,它曾被选做英国王室座驾,自新款帕萨特上市!17。99万起售,两种前脸造型,还用准备头盔吗?日前,上汽大众新款帕萨特正式上市,新车共推出10款燃油版车型和3款PHEV插电混动版车型,价格区间为17。9925。09万元,作为中期改款车型,新款帕萨特的外观有了很多变化,但作为液晶面板价格大跌,千年涨一回LED显示屏价格会回落吗?液晶面板价格创新低据日本经济新闻10月13日报道,从中国韩国中国台湾的液晶面板厂商与国内外电视厂商之间敲定的9月大单优惠价来看,指标产品OpenCell(未安装背照灯等的半成品)的魔都新地标带您解锁天文博物馆上海天文馆世界最大的天文博物馆主体建筑分为三大展区家园展区向观众科普太阳系宇宙展区介绍太阳系之外的可观测宇宙征程展区回顾了人类研究天文开展航天探索的历史打造多感官探索之旅帮助观众塑连夜宣布!阿里性侵事件,再曝新料一hr8月7日,星期六晚,一个在阿里内网曝光的帖子流出到公共平台,引爆了舆论。一名阿里巴巴女性员工,声称自己被单位男领导强制出差,期间在饭局上被灌酒,随后在餐厅和酒店房间遭到商户与如何更好的选择适合自己的舞台租赁显示屏产品?在大型演出礼仪晚会明星演唱会和活动现场,我们可以在现场经常看到各种舞台租赁显示屏身影。那么什么是舞台租赁显示屏?选择租赁LED显示屏时应注如何更好的选取适合自己的产品?第一,舞台租逐梦14年,安凯宝斯通N7的传承坚守与突破无畏向前,创新引领。14年时间,安凯宝斯通已成长为身经百战的实力派,不仅深刻影响了中国客车业,也为民族品牌的快速崛起贡献了力量。从2007年推出第一代公商务用车产品宝斯通,到201向世界展示中国自信!比亚迪卫冕8月全球新能源品牌销量冠军中国汽车行业再迎高光时刻,比亚迪连续两月摘得全球新能源单月品牌销量桂冠!日前,EVSALESEVVOLUMES公布了全球新能源乘用车销量的最新数据,比亚迪8月销量高达61014辆,
最近爆火的sanag气传导蓝牙耳机上手快玩体验骨传导耳机相信大家并不陌生,很多人都在用,其有着良好的亲和力,大多数环境与空间中使用,都有着良好的佩戴体验,运动中又能兼顾周围突发的环境音,当然很多用骨传导耳机的人都深有体会的就是华为回应与大众组建合资公司研发自动驾驶消息不属实澎湃新闻记者周玲10月20日,有媒体报道称,华为计划与全球汽车巨头大众集团组建合资公司,研发自动驾驶技术。对此,华为回应称,此消息不属实。有媒体援引消息人士的话报道称,华为和大众组官方优化果然不同,一加9RT拿下原神测试榜双第一昨天公布的原神测试榜单显示,一加9RT以帧率抖动第一,发热最高温度控制第一,平均功耗第四的成绩领跑榜单。这代表什么意思呢?原神玩家都知道,目前想要达到完全不卡顿的效果几乎是不可能的家里wifi信号差怎么办?家里的wifi为什么老是感觉网速慢?学会这几点让网速变快一大截。摆放位置要把路由器摆放在空旷的地方,比如客厅和主卧,尽量不要让wifi信号穿过太多墙壁和门,另外,金属物体放置在路由新房装修好了,家里买个扫地机器人到底实不实用呢?新房子装修好了家里经济条件好当然可以购买一台扫地机器人实用。现在的扫地机器人比较多,你可以在网上搜索找一款性价比比较高的扫地机器人。这里本人推荐一款价格为2800元钱的科沃斯机器人姚期智院士畅谈数字经济核心技术首次介绍数据定价算法18日,图灵奖获得者中国科学院院士清华大学交叉信息学院院长交叉信息核心技术研究院院长姚期智出席了由中央企业数字化发展研究院举办的数字化转型行动学习会议,并做了数字经济领域的核心科技复古蓝牙音箱上手体验,它找到了时代和记忆的平衡科技因为情怀的注入,变得更有温度时光因为音乐的渗透,而显得韵味十足。这可能是很多影音厂商推出复古音箱的一个初衷吧,本期视频要跟大家分享这款漫步者M230的体验,一起来看看它是否能唤你们的电脑都安装杀毒软件了吗?会有人攻击私人的电脑吗?我来回答一下这个问题,杀毒软件一般统称为安全软件,杀毒只是其其中一个重要功能,现在网络上的病毒软件相对已经没有以前那么多了,但是流氓软件越来越多,一不小心就被安装了全家桶,搞的一个天猫精灵可以连接电脑吗?天猫精灵是马云研发的并且在7月5日推出,天猫精灵是把强大的人工智能,塞进了一个杯子大小的硬件。马云突然地进军硬件,让苹果三星也措手不及。这款机器人的背后是一个开放系统,因为它整合了苹果x信号差怎么办?x的信号不好,我还真不知道,你要是说xr更不好我相信,其实整体来说,iPhone的信号确实差,没有诋毁的意思哦,实事求是而已。我都是站在客观的立场发言已已。苹果确实整个生态系统来说长期带耳机会有什么影响?长期戴耳机的危害1。损害听力长期戴耳机会损害听力,这点并不难理解,当我们的外耳道口被耳机紧紧堵塞住,高音量的音频声会直接进入耳内而损伤听力,长期戴耳机会对我们的耳蜗造成持续冲击,形