适配器模式
把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。
使用步骤:
步骤1: 创建Target接口;
public interface Target { //这是源类Adapteee没有的方法 public void Request(); }
步骤2: 创建源类(Adaptee) ;
public class Adaptee { public void SpecificRequest(){ } }
步骤3: 创建适配器类(Adapter)
//适配器Adapter继承自Adaptee,同时又实现了目标(Target)接口。 public class Adapter extends Adaptee implements Target { //目标接口要求调用Request()这个方法名,但源类Adaptee没有方法Request() //因此适配器补充上这个方法名 //但实际上Request()只是调用源类Adaptee的SpecificRequest()方法的内容 //所以适配器只是将SpecificRequest()方法作了一层封装,封装成Target可以调用的Request()而已 @Override public void Request() { this.SpecificRequest(); } }
步骤4: 定义具体使用目标类,并通过Adapter类调用所需要的方法从而实现目标
public class AdapterPattern { public static void main(String[] args){ Target mAdapter = new Adapter(); mAdapter.Request(); } }
IO中的适配器模式:
InputStreamReader和OutputStreamWriter类分别继承了Reader和writer接口,但是要创建他们的对象必须在构造函数中传入一个InputStream和OutputStream
的实例,InputStreamReader和OutputStreamWriter类的作用也就是将InputStream和OutputStream适配到Reader和Writer。
适配器是InputStreamReader,源角色是InputStream代表的实例对象,目标接口就是Reader类。