欢迎来到天天文库
浏览记录
ID:57057929
大小:572.50 KB
页数:30页
时间:2020-07-30
《java设计模式课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java设计模式Java设计模式Java设计模式8/23/20211软件学院宋波第8章适配器模式Java设计模式Java设计模式8/23/20212适配器模式(别名:包装器)将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。AdapterPattern(AnotherName:Wrapper)Converttheinterfaceofaclassintoanotherinterfaceclientsexpect.Adapterletsclassesworktogetherthatc
2、ouldn'totherwisebecauseofincompatibleinterfaces.A型螺母B型螺母A型螺丝B型螺丝可以拧在A型螺母B型螺母A型螺母适配器Java中接口的问题?Java设计模式Java设计模式8/23/20215在Java接口中——抽象方法:一个接口变量可以存放实现该接口类的实例的引用,从而可以回调该类所实现的方法。螺母、螺丝的问题——A接口变量不能存放实现实现B接口类的实例的引用,即A接口变量就无法回调B接口定义的方法。<>A+methodA():voidComputer+methodA():voi
3、d<>B+methodB():voidThink+methodB():void由于A接口声明的变量无法存放实现B接口类的实例的引用,所以A接口变量无法回调B接口定义的方法。8.1概述Java设计模式Java设计模式8/23/20217适配器模式是将一个类的接口(被适配者)转换成客户希望的另外一个接口(目标)的成熟模式;该模式中涉及有目标、被适配者和适配器。适配器模式的关键是建立一个适配器,这个适配器实现了目标接口并包含有被适配者的引用。AdapterA实现了A接口,并包含有B接口变量;A接口变量在回调适配器实现A接口的方法过程中
4、,通过委托B接口变量回调B接口中的方法,就能使用B接口定义的方法。<>A+methodA():voidAdapterA+methodA():void<>B+methodB():voidThink+methodB():voidb:B8.2模式的结构与使用Java设计模式Java设计模式8/23/20219模式的结构中包括三种角色:目标(Target)——是一个接口,是客户想要使用的接口;被适配者(Adaptee)——是一个已经存在的接口或抽象类,需要被适配;适配器(Adapter)——是一个实现了目标接口的类
5、,包含被适配者的引用;即其职责是对被适配者接口与目标接口进行适配。Java设计模式Java设计模式8/23/2021108.2.1模式的UML类图<>TargetAdapterA<>AdapterA型螺母B型螺母A型螺母适配器案例分析:Java设计模式Java设计模式8/23/202112用户已有一个两相的插座,最近又有了一个新的三相插座。用户现有一台洗衣机和一台电视机,洗衣机按着三相插座的标准配有三相插头,而电视机按着两相插座的标准配有两相插头;现在用户想用新的三相插座来使用洗衣机和电视机,即用新的三相插
6、座来为洗衣机和电视机接通电流。Java设计模式Java设计模式8/23/2021138.2.2模式的结构的描述与使用1.目标(Target):ThreeElectricOutlet.javapublicinterfaceThreeElectricOutlet{publicabstractvoidconnectElectricCurrent();}目标接口用来刻画三相插座,定义有抽象方法。Java设计模式Java设计模式8/23/2021142.被适配者(Adaptee)publicinterfaceTwoElectricOutlet{publicab
7、stractvoidconnectElectricCurrent();}被适配者接口用来刻画两相插座,定义有抽象方法。Java设计模式Java设计模式8/23/2021153.适配器(Adapter)publicclassTreeElectricAdapterimplementsThreeElectricOutlet{TwoElectricOutletoutlet;TreeElectricAdapter(TwoElectricOutletoutlet){this.outlet=outlet;}publicvoidconnectElectricCurr
8、ent(){outlet.connectElectricCurrent();}}适配器类实现了目标接口,并包
此文档下载收益归作者所有