定义:Convert a interface of class into anthoer interface clients expect.
Adapter let classes work together that could‘t otherwise because of incompatible interfaces
将实现某种接口的类转换成客户端希望的另一种接口接收方式.适配器让原本由于实现不同接口而无法一起应用的类在一起工作。
其他:适配器分为类适配器 和 对象适配器
类适配:适配器通过继承第三方类,来整合第三方的资源到客户端需要的类中
对象适配器:适配器通过聚合第三方的类,来整合地方的资源到客户端需要的类中(常用)
对象适配器类图:
一:接口
package dmode.adapter; /** * 类描述:人类接口 * @version 1.0 CreateDate: 2015-2-15 * * @updateDate * @updatePerson * @declare */ public interface IPerson { /** * 方法描述:自我介绍 */ public void selfIntrouction(); }
二:客户端实现类
package dmode.adapter; /** * 类描述: 中国人 * @version 1.0 CreateDate: 2015-2-15 * * @updateDate * @updatePerson * @declare */ public class ChinaPerson implements IPerson{ public ChinaPerson(){ } public ChinaPerson(String name_x,String name_m){ this.name_x = name_x; this.name_m = name_m; } /** * 中国人的姓 */ private String name_x; /** * 中国人的名 */ private String name_m; /** * @see dmode.adapter.IPerson#selfIntrouction() */ @Override public void selfIntrouction() { System.out.println("你好,我叫" + name_x + name_m); } /** * @param name_x the name_x to set */ public void setName_x(String name_x) { this.name_x = name_x; } /** * @param name_m the name_m to set */ public void setName_m(String name_m) { this.name_m = name_m; } }
三 第三方类(需要被适配的对象)
package dmode.adapter; /** * 类描述: 美国人 * @version 1.0 CreateDate: 2015-2-15 * * @updateDate * @updatePerson * @declare */ public class AmerPerson { public AmerPerson(){ } public AmerPerson(String name_first,String name_last){ this.name_first = name_first; this.name_last = name_last; } /** * 美国人的名字 */ private String name_first; /** * 美国人的姓氏 */ private String name_last; /** * 方法描述:美国人自我介绍 * @param person */ public void showSelf() { System.out.println("hello,I am" + name_first + "." + name_last); } /** * @return the name_first */ public String getName_first() { return name_first; } /** * @return the name_last */ public String getName_last() { return name_last; } }
四:适配器(此处为对象适配器,通过聚合,类适配器需要继承第三方类)
package dmode.adapter; /** * 类描述: 人员适配器 * @version 1.0 CreateDate: 2015-2-15 * * @updateDate * @updatePerson * @declare */ public class AdapterPerson implements IPerson{ private AmerPerson amerPerson; public AdapterPerson(AmerPerson _amerPerson){ this.amerPerson = _amerPerson; } /** * @see dmode.adapter.IPerson#selfIntrouction() */ @Override public void selfIntrouction() { System.out.println("你好,我叫" + amerPerson.getName_last() + amerPerson.getName_first()); } }
五:应用场景
package dmode.adapter; import java.util.ArrayList; import java.util.List; /** * 类描述: 场景 ,人员做自我介绍 * @version 1.0 CreateDate: 2015-2-15 * * @updateDate * @updatePerson * @declare */ public class Client { public static void main(String[] args) { //美国式的自我介绍 AmerPerson amerPerson = new AmerPerson("迈克尔","乔丹"); amerPerson.showSelf(); //将美国人变成适配器人进行中国式的自我介绍 List<IPerson> persons = new ArrayList<IPerson>(); //IPerson chinaPerson = new ChinaPerson("张","三"); IPerson person = new AdapterPerson(amerPerson); persons.add(person); for(IPerson per : persons){ per.selfIntrouction(); } } }
结果:
hello,I am迈克尔.乔丹
你好,我叫乔丹迈克尔
时间: 2024-12-31 03:59:37