适配器模式(Adapter),其含义是将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作了。因此适配器的主要作用就是完成旧接口到新接口的转换;将“既有系统“进行封装,逻辑上客户程序应该不知道”既有系统“的存在,将变化隔离在适配器部分;如果客户程序需要迁移,仅需要在适配器部分进行修改。
其适用性:
你想使用一个已经存在的类,而它的接口不符合你的要求,
你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可以不一定兼容的类)协同工作,
你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
实现适配一般有两种方式:一种是通过多重继承让适配器类具有既有类型的特点,同时也满足新接口的需要,一般称为类适配器;另一种是在适配器中保存一个队既有类型的引用,它自身按照客户程序的要求,实现新接口,这种方式被称为对象适配器。类适配器和对象适配器的结构如下,使用时应优先使用对象适配器:
代码1:被适配的类
public class Robot{ private String name; public void speakJapanese(){ System.out.println("I can speak Japanese!"); } public void speakEnglish(){ System.out.println("I can speak English!"); } }
代码2:适配的目标
public interface Job { public abstract void speakJapanese(); public abstract void speakEnglish(); public abstract void speakFrench(); }
代码3:适配器
public class Adapter extends Robot implements Job{ public void speakFrench() { System.out.println("I can speak French "); } }