设计模式总结:适配器模式

栏目: 后端 · 发布时间: 7年前

内容简介:适配器模式属于结构型模式,适配器模式的目的就是组合两个不相干类,在两个不兼容的接口之间提供一个混合接口,使其兼容适配把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。让我用白话来表述一下什么是适配器,在现有的系统中有新旧两个接口,由于新旧接口不兼容导致客户端调用出现问题,但是现有系统还需要使用旧的接口,所以这个接口不能重构,但是为了能够让客户端正常调用,我们就需要将新的接口转换成旧的接口,这种解决方式就是适配器模式

适配器模式属于结构型模式,适配器模式的目的就是组合两个不相干类,在两个不兼容的接口之间提供一个混合接口,使其兼容适配

什么是适配器模式

把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。

让我用白话来表述一下什么是适配器,在现有的系统中有新旧两个接口,由于新旧接口不兼容导致客户端调用出现问题,但是现有系统还需要使用旧的接口,所以这个接口不能重构,但是为了能够让客户端正常调用,我们就需要将新的接口转换成旧的接口,这种解决方式就是适配器模式

适配器模式类图

设计模式总结:适配器模式

类图中展示的三个类:Adaptee(被适配类),Target(目标接口),adapter(适配器)

适配器adapter的作用就是将被适配类Adaptee和目标接口Target接口组合到一起

实现

Target

目标接口,客户端调用request()方法

/**
 * @author: chenmingyu
 * @date: 2019/2/18 18:38
 * @description: 目标接口
 */
public interface Target {

    /**
     * 客户端访问的目标接口
     */
    void request();
}

Adaptee

被适配者,adapterMethod()被适配的方法

/**
 * @author: chenmingyu
 * @date: 2019/2/18 19:20
 * @description: 被适配类
 */
public class Adaptee {

    /**
     * 被适配的接口
     */
    public void adapterMethod(){
        System.out.println("我是要被适配的方法");
    };
}

Adapter

/**
 * @author: chenmingyu
 * @date: 2019/2/18 19:20
 * @description: 适配器
 */
public class Adapter implements Target {

    /**
     * 被适配类
     */
    private Adaptee adaptee;

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

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

测试

public static void main(String[] args) {
    Adaptee adaptee = new Adaptee();
    Adapter adapter = new Adapter(adaptee);
    adapter.request();
}

输出

我是要被适配的方法

以上所述就是小编给大家介绍的《设计模式总结:适配器模式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Writing Apache Modules with Perl and C

Writing Apache Modules with Perl and C

Lincoln Stein、Doug MacEachern / O'Reilly Media, Inc. / 1999-03 / USD 39.95

Apache is the most popular Web server on the Internet because it is free, reliable, and extensible. The availability of the source code and the modular design of Apache makes it possible to extend Web......一起来看看 《Writing Apache Modules with Perl and C》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具