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

Java设计模式之适配器模式

  一、简介
  适配器可视为一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在。
  适配器模式有三种:类适配器、对象适配器、接口适配器。
  前二者在实现上有些许区别,作用一样,第三个接口适配器差别较大。二、类适配器模式2.1 原理
  通过继承来实现适配器的功能。
  当我们要访问的接口A中没有我们想要的方法 ,却在另一个接口B中发现了合适的方法,我们又不能改变访问接口A,在这种情况下,我们可以定义一个适配器p来进行中转,这个适配器p要实现我们访问的接口A,这样我们就能继续访问当前接口A中的方法(虽然它目前不是我们的菜),然后再继承接口B的实现类BB,这样我们可以在适配器P中访问接口B的方法了,这时我们在适配器P中的接口A方法中直接引用BB中的合适方法,这样就完成了一个简单的类适配器。
  详见下方实例:我们以ps2与usb的转接为例。2.2 示例
  ps2接口:Ps2public interface Ps2 {     void isPs2(); }
  USB接口:Usbpublic interface Usb {     void isUsb(); }
  USB接口实现类:Usberpublic class Usber implements Usb {     @Override     public void isUsb() {         System.out.println("USB口");     } }
  适配器:Adapterpublic class Adapter extends Usber implements Ps2 {     @Override     public void isPs2() {         isUsb();     } }
  测试方法:Clienterpublic class Clienter {     public static void main(String[] args) {         Ps2 p = new Adapter();         p.isPs2();     } }
  执行结果:USB口示例解析
  我手中有个ps2插头的设备,但是主机上只有usb插头的插口,怎么办呢?弄个转换器,将ps2插头转换成为USB插头就可以使用了。接口Ps2:描述ps2接口格式接口Usb:描述USB接口格式类Usber:是接口Usb的实现类,是具体的USB接口格式Adapter:用于将ps2接口格式转换成为USB接口格式三、对象适配器模式3.1 原理
  通过组合来实现适配器的功能。
  当我们要访问的接口A中没有我们想要的方法 ,却在另一个接口B中发现了合适的方法,我们又不能改变访问接口A,在这种情况下,我们可以定义一个适配器p来进行中转,这个适配器p要实现我们访问的接口A,这样我们就能继续访问当前接口A中的方法(虽然它目前不是我们的菜),然后在适配器P中定义私有变量C(对象)(B接口指向变量名),再定义一个带参数的构造器用来为对象C赋值,再在A接口的方法实现中使用对象C调用其来源于B接口的方法。
  详见下方实例:我们仍然以ps2与usb的转接为例。3.2 示例
  ps2接口:Ps2public interface Ps2 {     void isPs2(); }
  USB接口:Usbpublic interface Usb {     void isUsb(); }
  USB接口实现类:Usberpublic class Usber implements Usb {     @Override     public void isUsb() {         System.out.println("USB口");     } }
  适配器:Adapterpublic class Adapter implements Ps2 {     private Usb usb;     public Adapter(Usb usb){         this.usb = usb;     }     @Override     public void isPs2() {         usb.isUsb();     } }
  测试类:Clienterpublic class Clienter {     public static void main(String[] args) {         Ps2 p = new Adapter(new Usber());         p.isPs2();     } }
  执行结果:USB口示例解析
  我手中有个ps2插头的设备,但是主机上只有usb插头的插口,怎么办呢?弄个转换器,将ps2插头转换成为USB插头就可以使用了。接口Ps2:描述ps2接口格式接口Usb:描述USB接口格式类Usber:是接口Usb的实现类,是具体的USB接口格式Adapter:用于将ps2接口格式转换成为USB接口格式四、接口适配器模式4.1 原理
  通过抽象类来实现适配,这种适配稍别于上面所述的适配。
  当存在这样一个接口,其中定义了N多的方法,而我们现在却只想使用其中的一个到几个方法,如果我们直接实现接口,那么我们要对所有的方法进行实现,哪怕我们仅仅是对不需要的方法进行置空(只写一对大括号,不做具体方法实现)也会导致这个类变得臃肿,调用也不方便,这时我们可以使用一个抽象类作为中间件,即适配器,用这个抽象类实现接口,而在抽象类中所有的方法都进行置空,那么我们在创建抽象类的继承类,而且重写我们需要使用的那几个方法即可。4.2 示例
  目标接口:Apublic interface A {     void a();     void b();     void c();     void d();     void e();     void f(); }
  适配器:Adapterpublic abstract class Adapter implements A {     public void a(){}     public void b(){}     public void c(){}     public void d(){}     public void e(){}     public void f(){} }
  实现类:Ashilipublic class Ashili extends Adapter {     public void a(){         System.out.println("实现A方法被调用");     }     public void d(){         System.out.println("实现d方法被调用");     } }
  测试类:Clienterpublic class Clienter {     public static void main(String[] args) {         A a = new Ashili();         a.a();         a.d();     } }五、适配器模式应用场景5.1 类适配器与对象适配器使用场景
  类适配器与对象适配器的使用场景一致,仅仅是实现手段稍有区别,二者主要用于如下场景:想要使用一个已经存在的类,但是它却不符合现有的接口规范,导致无法直接去访问,这时创建一个适配器就能间接去访问这个类中的方法。我们有一个类,想将其设计为可重用的类(可被多处访问),我们可以创建适配器来将这个类来适配其他没有提供合适接口的类。
  以上两个场景其实就是从两个角度来描述一类问题,那就是要访问的方法不在合适的接口里,一个从接口出发(被访问),一个从访问出发(主动访问)。5.2 接口适配器使用场景
  想要使用接口中的某个或某些方法,但是接口中有太多方法,我们要使用时必须实现接口并实现其中的所有方法,可以使用抽象类来实现接口,并不对方法进行实现(仅置空),然后我们再继承这个抽象类来通过重写想用的方法的方式来实现。这个抽象类就是适配器。

构筑冠状病毒防火墙,索菲玛变芯金刚滤清器全球首发1hr一场突如其来的疫情,正在改变未来的出行安全。在疫情防控中,除了有紧急应援,还有防患于未然的担当。在汽车领域,吉利比亚迪等品牌投入巨资为新车戴上CN95标准口罩,现代汽车则计划全系国六b零压舒适MPV2021款吉利嘉际上市5月25日,2021款吉利嘉际正式上市,新车共推出3种座椅布局4种动力系统共6款车型。其中,燃油版官方指导价为9。48万13。98万元,插电混动版嘉际ePro悠享型官方指导价15。大众Viloran威然速览德系商务MPV初体验大众Viloran威然,上汽大众首款大型豪华商务MPV,将于5月28日正式上市。车名释意Viloran威然Villa别墅Velour天鹅绒Grand大气车身尺寸长5346mm,宽1车市复工首月榜单出炉,轩逸夺冠,英朗亮眼3月中旬,国内车企除湖北武汉外陆续复工,4月是第一个完整的自然月。乘联会最新销量数据显示,4月国内狭义乘用车市场的零售销量为142。9万辆,同比下降仅5。6,环比增长36。6。市场送保险补贴上汽大众SUV家族享三年无忧保养越是在艰难环境,越能展现一个品牌真正的实力。4月,上汽大众大众品牌SUV家族终端交付达到39,049辆,位列合资SUV市场第一,同比与环比增长分别达到28。4和80。1,领先市场进这样的奥迪Q3轿跑,简直无敌了成为豪华A级SUV的扛把子,是奥迪Q3距离最近的目标。在多年与宝马X1和奔驰GLA的较量中,奥迪Q3从来就不满足你方唱罢我登场的戏码。而新锐凯迪拉克XT4的加入,让奥迪Q3的危机更2021款嘉际曝光,零压座椅离车自动换P挡成亮点5月11日,2021款吉利嘉际曝光。新车聚焦座舱健康驾控安全和互联5大舒适维度,打造出行业首款0压舒适MPV。造型方面,新车采用了吉利全新黑标,日行灯由此前的横向变为了竖向设计,窗比亚迪汉上海路演中5月16日,上海正大广场,比亚迪汉品鉴会现场。1hr特斯拉的牌打完了,轮到我们出牌了。5月1日,赵长江旗帜鲜明地将汉EV的目标锁定特斯拉Model3。身为比亚迪汽车销售有限公司总经聚焦制动距离32。8米!比亚迪汉EV是怎么做到的?32。8米!汉EV创造全球新能源车最短百公里制动距离纪录。近日,汉EV在百公里制动距离的测试过程中,取得了32。8米的成绩。这个成绩不仅刷新全球新能源车最短的百公里制动记录,也为新三分天注定,全新福特领界S用了十分力520,跨圈交朋友。在全新福特领界S的上市直播中,除了虚拟歌手洛天依出圈外,新车以近乎大派送的营销政策,盖过了发布价格的热度。拼了!爱拼才会赢福特领界S全系提供五款车型,售价10。怎样理性看待帕萨特中保研安撞事件?帕萨特的安全性能靠得住吗?根据中国交通事故深入研究(CIDAS)官方,对5339起真实交通事故的深入研究结果显示,中国与欧洲和美国的交通环境存在较大差异,两辆乘用车相撞的比例较低,
长安UNIT现代ix35领衔售价15万左右的紧凑型SUV推荐!对于消费者来说,选购一款适合自身用车需求的SUV才是最重要的。随着国内车市的日渐成熟,在15万元的售价区间,有相当一部分极具性价比的车型。今天,我们就带来长安UNIT现代ix35等预售价32万元起丰田赛那采用订单模式预售,搭载2。5L混动系统日前,广汽丰田赛那SIENNA正式开启预售。据悉,新车共推出6款车型,预售价格区间为32万42万元。新车将采用一人一车的订单模式下定,该车有望10月27日上市,并在明年1月陆续交付内外换新全新雷克萨斯NX海外起售价约26。3万元,提供4款车型日前,据外媒报道,全新雷克萨斯NX将于11月正式发售。新车包括NX250NX350NX350h以及NX450h等4款车型。起售价为455万日元(约26。3万人民币),而顶配车型售价为残障人士打造丰田赛那豪华福祉版预售价38万,11月初上市近日,广汽丰田发布了赛那豪华福祉版的相关信息。据悉,新车作为专为残障人士打造的无障碍汽车,预售价为38。00万元。该车将于11月初公布售价,2022年1月到店销售。赛那豪华福祉版与电动汽车空调制冷与燃油车空调制冷有三大不同点目前越来越多的朋友选择电动汽车,毕竟电动汽车有一些燃油车没有的优点,比如环保不限号科技感更强通勤上下班省钱车内安静等优点。同时相对于燃油车也有一些缺点,比如续航里程焦虑症充电桩稀缺燃油车硬刚混合动力日产轩逸和比亚迪秦PLUS,选谁?当下,对于不少刚需用户来说,选择10万元左右的轿车更具性价比。除了普通的燃油车型外,混动车型的加入,也让该细分市场的竞争更为激烈。今天,我们就带来日产轩逸和比亚迪秦PLUS,看看是什么是SASO认证及SASO认证注意事项有哪些saso是英文SaudiArabianStandardsOrganization的缩写,即沙特阿拉伯标准组织。SASO负责为所有的日用品及产品制定国家标准,标准中还涉及度量制度,标当逝去奶奶的声音再现中兴这个举动太暖心了一部中兴旧手机,连接了一段跨越时空的爱。近日,一位工程师帮助内蒙古小伙找回旧手机里逝去奶奶录音的故事感动了网友,在这个重阳节给网友们来了一波温情暴击。(来源内蒙古电视电台经济生活频什么是MITI备案?日本经济产业省METI备案METI认证简介日本经济产业省(METI,MinistryofEconomy,TradeandIndustry)发布该方法详细信息,其制定者是该部门商务信快递行业一半海水一半火焰,团油为快递企业降本增效开药方一年一度的双11即将启动,每年这个时候,都是快递行业的忙碌高峰。说起今年的快递行业,不得不提价格战,谁先涨价谁先死成为行业惨烈价格战的真实写照。然而价格鏖战之下没有赢家,无论企业网国货贵妇膏异军突起,国货之光品牌华瑞凯琳受疫情影响,全球经济震荡。特别是在中国,从2020到2021,从线下到线上,从网购到直播带货,在5G时代大背景下,一大批中国新锐国货品牌顺势而为,异军突起华瑞凯琳就是其中不得不提及