适配器模式
定义:
将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
实现:
适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高, 用得较少
代码案例:
类结构模式:
这里的目的是Chicken的gege方法能适配Duck的gaga方法。
Duck:
public interface Duck { public void gaGa(); }
Chicken:
public class Chicken { public void geGe() { System.out.println("chicken ge ge"); } }
适配器类:
public class ClassAdaptor extends Chicken implements Duck { @Override public void gaGa() { geGe(); } }
测试:
public class AdaptorTest { public static void main(String[] args) { ClassAdaptor adaptor = new ClassAdaptor(); adaptor.gaGa(); } }
结果:
这里调用的适配器类的gaga方法,但是是gege方法被调用了。所以达到了适配器模式的目的。
对象结构模式:
Duck和Chicken不变,就改适配器类:
public class ObjectAdaptor implements Duck{ public Chicken chicken; public ObjectAdaptor(Chicken chicken) { this.chicken = chicken; } @Override public void gaGa() { chicken.geGe(); } }
测试类:
public class AdaptorTest { public static void main(String[] args) { ObjectAdaptor adaptor1 = new ObjectAdaptor(new Chicken()); adaptor1.gaGa(); } }
结果:
对象结构模式与类结构模式区别是通过构造方法传参而不是继承类。