设计模式系列篇

设计模式系列篇(八)——适配器模式

2020-08-25  本文已影响0人  复旦猿

What

适配器模式(Adaptor Design Pattern)是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。转接器就是一个非常形象的例子,可以连接不同的接口。

Why

  1. 一般来说,适配器模式可以看作一种“补偿模式”,用来补救设计上的缺陷。应用这种模式实属“无奈之举”。如果在设计初期,我们就能协调规避接口不兼容的问题,那这种模式就没有应用的机会了。
  2. 其常用的场景有以下几种:

How

适配器的实现方式有两种对象适配器和类适配器两种,基本结构如下:

// 类适配器: 基于继承
public interface ITarget {
    void f1();

    void f2();

    void fc();
}

public class Adaptee {
    public void fa() {
        // ...
    }

    public void fb() {
        // ...
    }

    public void fc() {
        // ...
    }
}

public class Adaptor extends Adaptee implements ITarget {
    public void f1() {
        super.fa();
    }

    public void f2() {
        // 重新实现f2()...
    }

    // 这里fc()不需要实现,直接继承自Adaptee,这是跟对象适配器最大的不同点
}

// 对象适配器:基于组合
public interface ITarget {
    void f1();

    void f2();

    void fc();
}

public class Adaptee {
    public void fa() {
        // ...
    }

    public void fb() {
        // ...
    }

    public void fc() {
        // ...
    }
}

public class Adaptor implements ITarget {
    private Adaptee adaptee;

    public Adaptor(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    public void f1() {
        //委托给Adaptee
        adaptee.fa();
    }

    public void f2() {
        // 重新实现f2()...
    }

    public void fc() {
        adaptee.fc();
    }
}

代码地址

i-learning

写在最后

如果你觉得我写的文章帮到了你,欢迎点赞、评论、分享、赞赏哦,你们的鼓励是我不断创作的动力~

上一篇 下一篇

猜你喜欢

热点阅读