设计模式:结构型模式-----适配器模式
1.概述 将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的兼容性问题。
示例:生活中的适配器(即充电器),将220v的交流电转换为手机可以接受的直流电。
2.分类 a.类的适配器模式 当希望一个类转换成满足另一个新接口的类时,可以创建一个适配器类,持有原有类的一个实例,在适配器类的方法中,调用实例的方法就行。
b.对象的适配器模式 当希望一个对象转换成满足另一个新接口的对象时,可以创建一个适配器类,持有原有类的一个实例,在适配器类的方法中,调用实例的方法就行。
c.接口的适配器模式 当不希望实现一个接口中的所有方法时,可以创建一个抽象类,空实现所有接口方法,当我们要使用该接口的某一个方法时直接继承抽象类即可。
应用实例:生活中的手机适配器(即充电器),将220v的交流电转换为手机可以接受的直流电。
Target.java
package demo_adapter01; //目标接口:220v交流电 public interface Target { public void request(); }
TargetImpl.java
package demo_adapter01; //目标接口的实现类:220v交流电 public class TargetImpl implements Target{ @Override public void request() { System.out.println("手机将接收220v交流电"); } }
Adapatee.java
package demo_adapter01; //被适配类:手机可以使用的直流电 public class Adapatee { public void adapterRequest() { System.out.println("手机将接收其可以使用的直流电"); } }
Adapater.java
package demo_adapter01; //适配器类:将220v交流电转换为手机可以使用的直流电 //继承被适配类且实现目标类的接口 public class Adapater extends Adapatee implements Target{ @Override //在目标接口类的方法中调用被适配者的方法 public void request() { super.adapterRequest(); } }
Test.java
package demo_adapter01; public class Test { public static void main(String[] args) { //1.正常使用目标类的方法 Target target=new TargetImpl(); System.out.println("若不使用适配器去给手机充电!"); target.request(); //2.通过适配器类来使用目标类的方法 Target targetAdapater=new Adapater(); System.out.println("使用适配器去给手机充电!"); targetAdapater.request(); } }
运行结果图