适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
这个模式可以通过创建适配器进行接口转换,让不兼容的接口变成兼容。这可以让客户从实现的接口解耦。如果在一段时间之后,我们想要改变接口,适配器可以将改变的部分封装起来,客户不必为了应对不同的接口而每次跟着修改。
Duck
/** * @author oy * @date 2019年9月8日 下午3:45:05 * @version 1.0.0 */ public interface Duck { public void quack(); public void fly(); }
Turkey
public interface Turkey { // 火鸡不会呱呱叫,只会咯咯叫 public void gobble(); // 火鸡会飞,只是飞不远 public void fly(); }
WildTurkey
public class WildTurkey implements Turkey { @Override public void gobble() { System.out.println("Gobble gobble..."); } @Override public void fly() { System.out.println("I'm flying a short distance"); } }
TurkeyAdapter
/** * 包装一只火鸡,使之看起来像是鸭子 * @author oy * @date 2019年9月8日 下午3:53:40 * @version 1.0.0 */ public class TurkeyAdapter implements Duck { Turkey turkey; public TurkeyAdapter(Turkey turkey) { this.turkey = turkey; } @Override public void quack() { turkey.gobble(); } @Override public void fly() { turkey.fly(); } }
测试:
public static void main(String[] args) { TurkeyAdapter trukeyAdapter = new TurkeyAdapter(new WildTurkey()); trukeyAdapter.quack(); trukeyAdapter.fly(); }
---