(七)适配器模式

一、概念

将一个类的接口,转化成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间

  • “对象”适配器:使用组合
  • “类”适配器:使用继承

将一个接口转化成另一个接口

二、基本内容

  • Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。
  • Adapter(适配器类):适配器可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,适配器类是适配器模式的核心,在对象适配器中,它通过继承Target并关联一个Adaptee对象使二者产生联系。
  • Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类一般是一个具体类,包含了客户希望使用的业务方法,在某些情况下可能没有适配者类的源代码。

三、代码示例

(1)定义被适配的类

public class Adaptee {

    public void adapteeRequest(){
        System.out.println("被适配的方法....");
    }
}

(2)定义目标接口

public interface Target {

    void request();
}

public class ConcreteTarget implements Target {
    @Override
    public void request() {
        System.out.println("concreteTarget目标方法");
    }
}

(3)定义适配类

public class Adapte extends Adaptee implements Target {
    @Override
    public void request() {
        super.adapteeRequest();
    }
}

(4)测试调用

public static void main(String[] args) {
    Target target = new ConcreteTarget();
    target.request();

    Target adapterTarget = new Adapte();
    adapterTarget.request();
}

//==========结果===========
concreteTarget目标方法
被适配的方法...

(5)对象适配器

对象适配器与类适配器不同之处在于,类适配器通过继承来完成适配,对象适配器则是通过关联来完成,这里稍微修改一下 Adapter 类即可将转变为对象适配器

public class ObjectAdapter implements Target {

    private Adaptee adaptee = new Adaptee();

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

四、类图

  • “对象”适配器
    在这里插入图片描述
  • “类”适配器
    在这里插入图片描述

五、应用场景

  • spring AOP中的适配器模式
  • spring JPA中的适配器模式
  • spring MVC中的适配器模式
发布了18 篇原创文章 · 获赞 0 · 访问量 280
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览