适配器模式(Adapter Pattern)
适配器模式定义:Adapter Pattern将一个类的接口,转换成客户期望的另一个接口,Adapter Pattern让原本接口不兼容的2个类可以合作无间。
通过加入适配器,在不修改原有类/接口和现有类/接口的情况下使原本不互通的2个类/接口兼容
没有修改就意味着没有风险
适配器模式分为3个组成部分:
Target -- 目标类/接口
Adapter -- 适配器
Adaptee -- 被适配的类/接口(被适配器适配成需要的目标类/接口)
例如:
public class Chick { public void crow(){ System.out.println("chick crow!"); } }
public class DuckAdapter extends Chick { private Duck duck; public DuckAdapter(Duck duck){ this.duck = duck; } public void crow(){ duck.quack(); } }
public class Duck { public void quack(){ System.out.println("duck quack!"); } }
public class Test { public static void main(String[] args) { Chick c = new DuckAdapter(new Duck()); c.crow(); } }运行结果:
duck quack!
当然所有被适配对象/接口(Duck)的子类也可以通过该适配器(DuckAdapter)与目标对象/接口(Chick)兼容
稍微改进适配器(DuckAdapter)能够提供更多的功能:
缺点:如果目标类/接口(Chick)比较庞大,适配器(DuckAdapter)也会变得相当庞大,难于维护