适配器模式还是很好理解的,简单来讲就是我有一个 pencil,我还有一个 apple,然后通过一个适配器,嗯 pencil and apple。我还有一个 carrot,我还有个 apple,然后再通过一个适配器适配一下,嗯 carrot and apple。

1 上代码

首先,我们看需要有一个 apple。

1
2
3
4
5
public class Apple {
    public void combine(AdaptiveMethod adaptiveMethod) {
        adaptiveMethod.adaptiveMethod();
    }
}

然后我们需要有一个 pencil 和 carrot。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
public class Carrot {
    public void combineApple() {
        System.out.println("Combine carrot and apple");
    }
}
public class Pen {
    public void combineApple() {
        System.out.println("Combine pen and apple");
    }
}

现在需要结合一下,所以我们通过适配器来实现。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public interface AdaptiveMethod {
    /** 适配方法 */
    void adaptiveMethod();
}

public class PenAdapter implements AdaptiveMethod {
    private Pen pen;

    public PenAdapter(Pen pen) {
        this.pen = pen;
    }

    @Override
    public void adaptiveMethod() {
        pen.combineApple();
    }
}

public class CarrotAdapter implements AdaptiveMethod {
    private Carrot carrot;

    public CarrotAdapter(Carrot carrot) {
        this.carrot = carrot;
    }

    @Override
    public void adaptiveMethod() {
        carrot.combineApple();
    }
}

最后我们测试一下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
public class Main {
    public static void main(String[] args) {
        Apple apple = new Apple();
        // 与 pen 结合
        PenAdapter penAdapter = new PenAdapter(new Pen());
        apple.combine(penAdapter);
        // 与 carrot 结合
        CarrotAdapter carrotAdapter = new CarrotAdapter(new Carrot());
        apple.combine(carrotAdapter);
    }
}

下面是输出结果

1
2
Combine pen and apple
Combine carrot and apple

完美

参考资料

  1. 适配器模式