目的

把一个类的接口转换成另一个用户需要的接口。
适配器1.png

类图

适配器类图.png

实现

鸭子(Duck)和火鸡(Turkey)拥有不同的叫声,Duck 的叫声调用 quack() 方法,而 Turkey 调用 gobble() 方法。
要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法,从而让火鸡冒充鸭子!

  1. public interface Duck {
  2. void quack();
  3. }
  4. public interface Turkey {
  5. void gobble();
  6. }
  7. public class WildTurkey implements Turkey {
  8. @Override
  9. public void gobble() {
  10. System.out.println("gobble!");
  11. }
  12. }
  13. public class TurkeyAdapter implements Duck {
  14. Turkey turkey;
  15. public TurkeyAdapter(Turkey turkey) {
  16. this.turkey = turkey;
  17. }
  18. @Override
  19. public void quack() {
  20. turkey.gobble();
  21. }
  22. }
  23. public class Client {
  24. public static void main(String[] args) {
  25. Turkey turkey = new WildTurkey();
  26. Duck duck = new TurkeyAdapter(turkey);
  27. duck.quack();
  28. }
  29. }

JDK中的体现