兰溪城市建设规划网站,主流电商平台有哪些,山东网站建设公司哪家权威,大型移动网站开发Java适配器模式 #xff08;摘自百度文库#xff09; 问题引出#xff1a;大家生活中可能碰到的一个问题就是你新买的手机自带的耳机是2.5接口的#xff0c;不幸的是有一天你的耳机坏了#xff0c;你去市面上根本就找不到2.5的耳机了#xff0c;基本上是3.5接口了#x… Java适配器模式 摘自百度文库 问题引出大家生活中可能碰到的一个问题就是你新买的手机自带的耳机是2.5接口的不幸的是有一天你的耳机坏了你去市面上根本就找不到2.5的耳机了基本上是3.5接口了没办法你只好买了个3.5接口的耳机老板告诉你“我给你一个适配器”这不问题就解决了。 问题分析3.5的接口的耳机在你手机上本来是没法使用的因为它没有按照2.5接口的设计啊而现在我又想使用这幅耳机于是乎有了“适配器Adapter”这个一个东西出来了。 Adapter模式的定义把一个类的接口变换成客户端所期待的另外一种接口使得原本由于接口不兼容而不能再一起工作的那些类可以一起工作。 适配器模式分类1.类的适配器模式采用继承实现2.对象适配器采用对象组合方式实现 类的适配器类图 模式的构成以问题中例子为模型 目标抽象角色(Target):定义客户所期待要使用的接口我们把手机当做客户端客户端所需要使用的耳机的接口是2.5的在这里就可以抽象出来一个2.5接口的设备并不一定是耳机。 源角色(Adaptee):需要被适配的接口在这里指的是我们从市场上买回来的那个3.5接口的耳机。 适配器角色(Adapter)用来把源接口转换成符合要求的目标接口的设备在这里指的是老板送给我们的那个“转换器”。 客户端(Client)这里指的就是那个给我们带来麻烦的手机喽。 示例代码 Java代码 //Target package pattern.adapter; public interface Target { public void provide2_5(); } //Adaptee package pattern.adapter; public class Adaptee { public void provide3_5(){ System.out.println(我是一个3.5的接口哦); } } //Adapter package pattern.adapter; public class Adapter extends Adaptee implements Target { Override public void provide2_5() { this.provide3_5(); } } //Client package pattern.adapter; public class CellPhoneClient { public static void main(String[] args) { Target target new Adapter(); //该手机只支持2.5接口的耳机 target.provide2_5(); } } //Target package pattern.adapter; public interface Target { public void provide2_5(); } //Adaptee package pattern.adapter; public class Adaptee { public void provide3_5(){ System.out.println(我是一个3.5的接口哦); } } //Adapter package pattern.adapter; public class Adapter extends Adaptee implements Target { Override public void provide2_5() { this.provide3_5(); } } //Client package pattern.adapter; public class CellPhoneClient { public static void main(String[] args) { Target target new Adapter(); //该手机只支持2.5接口的耳机 target.provide2_5(); } } 输出结果 我是一个3.5的接口哦 从输出结果可以看出只支持2.5接口的手机成功的使用3.5的耳机了。这就是适配器模式的作用。 对象的适配器模式 对象的适配器模式的不同之处在于Adapter角色封装了Adaptee角色而不像类的适配器模式所采取的继承方式。其原理基本上是相似的。 应用适配器模式的场景 1.系统需要使用现有的类而现有类不符合当前系统的要求。如问题的提出。 2.系统要建立一个可以重复使用的类用来与彼此没有太大关联的类或者在将来要引用的类一起工作。 java适配器模式之--对象适配器模式转 上次谈到类适配器由于类的适配器只能用于单一源的适配显然有多个源时显然满足需要此时我们需要运用对象的适配器模式对象的适配器模式是把一个源聚合到适配器类中去从而能够满足多源的要求。看看代码 源代码 public class Person {private String name;private String sex;private int age;public void speakJapanese(){ System.out.println(I can speak Japanese!);}public void speakEnglish(){ System.out.println(I can speak English!);}...//以下省略成员变量的get和set方法} 目标接口 public interface Job {public abstract void speakJapanese();public abstract void speakEnglish();public abstract void speakFrench();} 对象适配器类 public class Adapter implements Job { Person person; public Adapter(Person person) { this.person person;} public void speakEnglish() { person.speakEnglish();} public void speakJapanese() { person.speakJapanese();} //new addpublic void speakFrench() { } } 可以看出对象适配器类通过聚合引入了源对象并实现了目标对象的方法speakFrench或者照搬将源对象做为适配器的成员变量通过构造子来设定源对象。 思考 1. 一个适配器可以将多种不同的源适配到同一个目标。换言之同一个适配器可以把源类和它的子类都适配到目标接口。 2. 与类的适配器模式相比要想置换源类的的方法就不容易。如果一定要置换掉源类的一个或多个方法就只好先做一个源类的子类将源类的方法置换掉然后再把源类的子类当做真正的源进行适配。 3. 虽然要想置换掉源类的方法不容易但是要想增加一些新的方法则方便的很而且新增的方法可以同时适用于所有的源。 转载于:https://www.cnblogs.com/lyunyu/archive/2013/04/11/3015484.html