Java软件设计模式之适配器模式详解

 更新时间:2023年07月20日 09:34:35   作者:王雀跃  
这篇文章主要介绍了Java软件设计模式之适配器模式详解,适配器模式可分为对象适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承(或实现)关系,需要的朋友可以参考下

适配器模式

1、原理

适配器模式是一种结构型设计模式。适配器模式的思想是:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作

2、角色分析

适配器模式涉及3个角色:

源(Adaptee):需要被适配的对象或类型,相当于插头。适配器(Adapter):连接目标和源的中间对象,相当于插头转换器。目标(Target):期待得到的目标,相当于插座。

3、优缺点

适配器形式

适配器模式包括3种形式:类适配器模式、对象适配器模式、接口适配器模式(或又称作缺省适配器模式)。

一、类适配器

代码:

Adaptee

package oopdemo01.Design_pattern.adapter;
// 要被适配的类:网线
public class Adaptee {
    public void request() {
        System.out.println("连接网线上网");
    }
}

Adapter(此处继承Adaptee)

package oopdemo01.Design_pattern.adapter;
// 1.继承 (类适配器,单继承)
// 真正的适配器,需要连接usb,连接网线
public class Adapter extends Adaptee implements NetToUsb {
    @Override
    public void handleRequest() {
        super.request(); // 可以上网了
    }
}

NetToUsb

package oopdemo01.Design_pattern.adapter;
// 接口转换器的抽象实现
public interface NetToUsb {
    // 作用:处理请求,网线=>usb
    public void handleRequest();
}

Computer

package oopdemo01.Design_pattern.adapter;
// 客户端类:想上网,插不上网线
public class Computer {
    // 我们的电脑需要连接上转接器才可以上网
    public void net(NetToUsb adapter) {
        // 上网的具体实现,找一个转接头
        adapter.handleRequest();
    }
    public static void main(String[] args) {
        // 电脑 适配器 网线
        Computer computer = new Computer(); // 电脑
        Adaptee adaptee = new Adaptee();    // 网线
        Adapter adapter = new Adapter();    // 转接器
        computer.net(adapter);
    }
}

控制台输出结果:

二、对象适配器

Adapter2(此处的Adaptee是一个属性)

package oopdemo01.Design_pattern.adapter;
// 2.组合 (对象适配器:更常用)
// 真正的适配器,需要连接usb,连接网线
public class Adapter2 implements NetToUsb {
    private Adaptee adaptee;
    public Adapter2(Adaptee adaptee) {
        this.adaptee = adaptee;
    }
    @Override
    public void handleRequest() {
        adaptee.request(); // 可以上网了
    }
}

Computer

package oopdemo01.Design_pattern.adapter;
// 客户端类:想上网,插不上网线
public class Computer {
    // 我们的电脑需要连接上转接器才可以上网
    public void net(NetToUsb adapter) {
        // 上网的具体实现,找一个转接头
        adapter.handleRequest();
    }
    public static void main(String[] args) {
        // 电脑 适配器 网线
        Computer computer = new Computer(); // 电脑
        Adaptee adaptee = new Adaptee();    // 网线
        Adapter2 adapter2 = new Adapter2(adaptee);    // 转接器
        computer.net(adapter2);
    }
}

控制台输出结果:

到此这篇关于Java软件设计模式之适配器模式详解的文章就介绍到这了,更多相关Java适配器模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript实现贪吃蛇游戏

    JavaScript实现贪吃蛇游戏

    这篇文章主要为大家详细介绍了JavaScript实现贪吃蛇游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • springboot线程池监控的简单实现

    springboot线程池监控的简单实现

    本文主要介绍了springboot线程池监控的简单实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 详解Java从后台重定向(redirect)到另一个项目的方法

    详解Java从后台重定向(redirect)到另一个项目的方法

    这篇文章主要介绍了详解Java从后台重定向(redirect)到另一个项目的方法,非常具有实用价值,需要的朋友可以参考下
    2017-04-04
  • 树莓派.GPRS.短信接收器

    树莓派.GPRS.短信接收器

    这篇文章主要介绍了树莓派.GPRS.短信接收器的相关知识,需要的朋友可以参考下
    2017-10-10
  • 深入了解Java中的static关键字

    深入了解Java中的static关键字

    这篇文章主要为大家详细介绍了Java中的static关键字的用法的相关资料,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以学习一下
    2022-11-11
  • Mybatis中mapper.xml实现热加载介绍

    Mybatis中mapper.xml实现热加载介绍

    大家好,本篇文章主要讲的是Mybatis中mapper.xml实现热加载介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • Java实现API sign签名校验的方法详解

    Java实现API sign签名校验的方法详解

    为了防止中间人攻击,有时我们需要进行API sign 签名校验。本文将用Java语言实现API sign 签名校验,感兴趣的小伙伴可以尝试一下
    2022-07-07
  • SpringBoot中选择性加载Bean的几种方式小结

    SpringBoot中选择性加载Bean的几种方式小结

    自动配置是springboot技术非常好用的核心因素,前面学习了这么多种技术的整合,每一个都离不开自动配置,不过在学习自动配置的时候,需要你对spring容器如何进行bean管理的过程非常熟悉才行,本文给大家介绍了SpringBoot中选择性加载Bean的几种方式,需要的朋友可以参考下
    2025-01-01
  • Java SpringBoot自定义starter详解

    Java SpringBoot自定义starter详解

    大家好,本篇文章主要讲的是Java SpringBoot自定义starter详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次
    2022-01-01
  • 关于log4j漏洞修复解决方案及源码编译

    关于log4j漏洞修复解决方案及源码编译

    Log4j 是Apache为Java提供的日志管理工具。他与System.out.println()的作用相似,用来跟踪、调试、维护程序。这篇文章主要介绍了关于log4j漏洞修复解决方案及源码编译,需要的朋友可以参考下
    2021-12-12

最新评论