Intent

把一个类接口转换成另一个用户需要的接口。
适配器 - 图1
比如List<String> list = Arrays.asList("a","b","c");,本来我这边提供的是数组,但是client需要的是List,那我就可以通过适配器,进行一个转换,得到用户需要的List

Class Diagram

适配器 - 图2

Implementation

鸭子(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. // 在鸭子的叫声方法中调用火鸡的叫声,这也就可以以满足client需求的前提下执行这个方法
  21. turkey.gobble();
  22. }
  23. }
  24. public class Client {
  25. public static void main(String[] args) {
  26. Turkey turkey = new WildTurkey();
  27. // 传进入火鸡,得到鸭子
  28. Duck duck = new TurkeyAdapter(turkey);
  29. duck.quack();
  30. }
  31. }

JDK