设计模式(六):适配器模式

2019/12/23

将一个类的接口包装成客户所希望的另一个接口。

适配器模式

有时候,出现这么多设计模式的原因,仅仅是因为可复用的类接口与专业所需接口不同。

在我们的系统中,需要调用某个已存在的类,我们可以复用它,但是接口与我们的需求不一样,这个时候就可以使用适配器模式。

被适配者

class Adaptee{
    public void someRequest(){ }
}

目标接口

它可以满足我们的需求,但是我们不想要它这种接口,于是再定义一个Target,我们想让Adaptee能展现是出这样的接口

interface Target{
     void request();
}

适配器

最后,我们的适配器将会实现target接口

class Adapter implements Target{
    private Adaptee adaptee = new Adaptee();

    @Override
    public void request() {
        adaptee.someRequest();
    }
}

使用

Target target = new Adapter();
target.request();

何时使用

  • 可以复用一个已存在的类,但是接口不符合需求
  • 创建一个可以复用的类

类图

实例

欧洲插头与中国插头是不一样的,所以需要一个转接头才能让电器正常工作

class ChinesePlug{
    public void plugin(){}
}

class EuropePlug{
    public void plugin(String xxx){}
}

我们创建一个转接头,让中国的电器能通过转接头正常工作

class PlugAdapter extends ChinesePlug{
    private EuropePlug europePlug = new EuropePlug();
    @Override
    public void plugin() {
        String x = "....";
        europePlug.plugin(x);
    }
}

Post Directory