java设计模式——adapter模式

MT5交易软件系统源码 Manager配置的功能及权限:管理客户、开户,销户、入金、信用额度、修改定单、人工交易报表、设定点差、强制平仓、修改密码,设定持仓交割单或挂单小止盈止损点数;26、修改价格 27、更改K线图历史价格 28、同步历史数据;2、系统设置 3、交易管理 4、交易柜台 5、价格更改 6、多台服。务器联机 7、恢复交易历史 8、数据源调整 9、备份服务调整 10、交易市场设定 11、交易单更改 12、平台时间设定(全世界) 13、可添加商品;15、设置商品利息;独立主机(服务器、VPS、VM) 阅读详情

描述

将现有的模块接口转换一下,以适配新的接口需求,用于填补“现有的程序“和“所需的程序“之间差异。通常也会被称为:wrapper(包装)模式。

模式中的角色

adapter模式中有以下主要角色:
1. target(对象)
该角色负责定义所需的方法,描述需要adapter转换之后的接口。
2. client(请求者)
转换之后的接口使用者,client通过adapter访问已有的旧接口。
3. adaptee(被适配者)
已经存在的旧接口实现者,提供老旧的接口实现,是需要adapter转换的对象。
4. adapter(适配者)
是本模式的核心,用于将现有的接口转换成需要的接口。

模式分类

在实际操作中,通常adapter模式有以下两种形式:

  1. 类适配器模式(使用继承的适配器)
  2. 对象适配器模式(使用委托的适配器)

为了方便描述,这里我们举一个实际的例子,这里的例子就是广告条幅展示的例子。现有的广告条幅展示形式有带有括号的展示方式:
(这里是广告的内容)
还有带有星号的形式:
*这里是广告的内容*
这是目前已有的两种形式。现在有一个新的电子广告展示器,可以展示加粗和不加粗的字体广告,加粗的形式就是使用星号将广告的内容包含起来,就像上面的形式;不加粗的就是使用括号将广告内容包含起来,也是和上面的一样。
现在的做法就是做一个适配器,使用这个适配器adapter将老的广告展示转换成新的广告展示形式
这个例子中涉及的模式角色有:

  • target——新的广告展示形式
  • client——广告投递商
  • adaptee——旧的广告展示牌
  • adapter——适配器,需要实现的

涉及到的java类有:

  • IPrint——这是一个接口,对应target
  • Main——这是主类,对应client
  • Banner——这是旧的广告展示实现,对应adaptee
  • PrintBanner——这是广告展示转换器,对应adapter

类适配器模式

类适配器模式使用类继承和接口实现的方式实现,类图描述如下:
这里写图片描述
代码如下:

IPrint

/*************************************************************************
    > File Name: IPrint.java
    > Author: CreateChance
    > Mail: createchance@163.com 
    > Created Time: Fri Mar  2 11:29:26 2018
 ************************************************************************/
public interface IPrint {
    void printWeak();
    void printStrong();
}
/*************************************************************************
    > File Name: Banner.java
    > Author: CreateChance
    > Mail: createchance@163.com 
    > Created Time: Fri Mar  2 11:30:10 2018
 ************************************************************************/
public class Banner {
    private String name;

    public Banner(String name) {
        this.name = name;
    }

    public void showWithParen() {
        System.out.println("(" + name + ")");
    }

    public void showWithAster() {
        System.out.println("*" + name + "*");
    }
}

PrintBanner

/*************************************************************************
    > File Name: PrintBanner.java
    > Author: CreateChance
    > Mail: createchance@163.com 
    > Created Time: Fri Mar  2 11:32:59 2018
 ************************************************************************/
public class PrintBanner extends Banner implements IPrint {
    public PrintBanner(String name) {
        super(name);
    }

    @Override
    public void printWeak() {
        super.showWithParen();
    }

    @Override
    public void printStrong() {
        super.showWithAster();
    }
}

Main

/*************************************************************************
    > File Name: Main.java
    > Author: CreateChance
    > Mail: createchance@163.com 
    > Created Time: Fri Mar  2 11:35:06 2018
 ************************************************************************/
public class Main {
    public static void main(String argv[]) {
        // 这里我们使用IPrint类型,就是为了面向接口,而不是面向具体实现类。
        // 因为Main作为一个client对象,只需要直接接口定义就行了,不需要知道实现
        IPrint printer = new PrintBanner("This is banner.");
        printer.printWeak();
        printer.printStrong();
    }
}

对象适配器模式

和类适配器模式不同的是,对象适配器模式使用的组合模式实现,也就是委托。将自己需要完成的一些工作,委托给别的对象完成。上面的类适配器模式中,我们将PrintBanner类继承自Banner来获得Banner的能力,其实我们还可以通过委托来实现。具体的做法就是在PrintBanner中加入一个内部字段,类型就是Banner。通过内部持有的Banner对象来访问Banner的方法。所做的修改就是将类适配模式中的PrintBanner修改为如下:

/*************************************************************************
    > File Name: PrintBanner.java
    > Author: CreateChance
    > Mail: createchance@163.com 
    > Created Time: Fri Mar  2 11:37:43 2018
 ************************************************************************/
public class PrintBanner implements IPrint {
    private Banner banner;

    public PrintBanner(String name) {
        banner = new Banner(name);
    }

    @Override
    public void printWeak() {
        banner.showWithParen();
    }

    @Override
    public void printStrong() {
        banner.showWithAster();
    }
}

类图描述如下:
这里写图片描述

【AI测试必学】DeepSeek API 快速入门:获取 API Key 与调用 API 步骤详解 DeepSeek API 使用与 OpenAI 兼容的格式,可以通过修改配置使用 OpenAI SDK。生成的 API Key 只会显示一次,请妥善保存。注册并登录账号,进入左侧导航栏的。创建 API Key。 阅读详情

相关推荐

告别理论!手把手教你用Vivado 2020.2为ZYNQ PL端打造一个AXI4-Full读写DDR的IP核

本文详细介绍了如何使用Vivado 2020.2为ZYNQ PL端创建AXI4-Full主控IP核,实现高效读写DDR内存的实战指南。通过环境配置、IP核创建、系统集成到软件调试的全流程讲解,帮助开发者快速掌握AXI4-Full协议在ZYNQ平台上的应用,提升PL与PS协同工作的数据传输效率。

weixin_30300225的博客 467

java设计模式之——适配器(Adapter)模式

GoF的23种设计模式设计模式之——适配器(Adapter)模式适配器模式定义适配器模式的优点适配器模式的缺点适配器模式的实现适配器模式的使用场景 设计模式之——适配器(Adapter)模式 适配器模式定义 将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。 适配器模式的优点 客户端可以透明地调用目标接口。 将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。 复用了现存的类,不需要修改原有代码。

聪明马的博客 589

【通信原理 入坑之路】—— 详解IQ调制以及星座图原理

文章目录一. IQ调制与解调的原理与过程二.PSK(相移键控)和IQ调制的关系:2.1 用IQ调制实现QPSK调制 一. IQ调制与解调的原理与过程 IQ调制的定义是:“IQ调制就是数据分为两路,分别进行载波调制,两路载波相互正交。I是in-phase(同相), q是 quadrature(正交)” 我们通过下面的示意图介绍IQ调制的过程: 首先,信号分成两路:I路和Q路(为了方便理解我们把这两...

凝望,划过星空的博客 11万+

adapter java_Java 实现适配器(Adapter)模式

平时我们会常常碰到这种情况,有了两个现成的类,它们之间没有什么联系。可是我们如今既想用当中一个类的方法。同一时候也想用另外一个类的方法。有一个解决方法是。改动它们各自的接口。可是这是我们最不愿意看到的。这个时候Adapter模式就会派上用场了适配器 模式有三种方式,一种是对象适配器,一种是类适配器, 一种是接口适配器下面举例说明:类适配器 类图public class DrawRectangle...

weixin_42451611的博客 1913

告别复杂配置:dbswitch vs 传统工具(Kettle/DataX)在Greenplum数据同步中的性能对比

本文深入对比了新兴工具dbswitch与传统ETL工具Kettle、DataX在Greenplum数据同步中的表现。重点分析了dbswitch如何通过免中间文件、利用二进制COPY协议等设计,在异构数据库同步场景下实现更优的性能和更简化的配置,为技术选型提供清晰参考。

transformer2023的博客 1046

Android Input——输入系统介绍(一)

Input 系统对于提供流畅、灵敏和一致的用户交互体验至关重要,它需要在不同的设备、场景和应用中保证输入事件的正确性、及时性和安全性。Android 输入系统是一个复杂但高效的设计,旨在处理来自各种输入设备(如触摸屏、键盘等)的用户交互,并将这些交互转换为应用程序可以理解和响应的形式。EventHub:输入系统的最底层,直接与硬件通信,监听和读取输入设备的原始事件。:从 EventHub 获取原始输入事件,对其进行解析,转化为更高层次的事件,以便上层应用或服务能够理解。

小旭的专栏 1712

Java设计模式-适配器模式(Adapter)

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。

qq_37400096的博客 2931

vue2 - 详细实现播放AMR格式音频并实现自定义播放器样式,支持amr音频文件在线地址URL播放、调用服务端API接口获取二进制文件流amr形式、用户本地上传amr文件并实现立即播放(详细代码)

vue2,amr,amr文件播放,vue播放amr音频文件以及在线url跨域问题解决,vue使用audio标签播放amr音频,amr跨域解决,amr网页解码播放,文件上传后怎么播放,vue2播放.amr语音文件,api接口形式调用获取的amr如何播放,vue中如何使用audio元素播放AMR格式的文件,进度条,vue前端如何播放AMR格式的音频文件,vue播放语音文件AMR格式,播放amr格式音频AMR录音机,h5原生audio播放amr格式的音频,VUE2使用benz-amr-recorder 实现解码、

✅ 精选推荐文章 7414

Java 实现适配器(Adapter)模式

Java 实现适配器(Adapter)模式 平时我们会常常碰到这种情况,有了两个现成的类,它们之间没有什么联系。可是我们如今既想用当中一个类的方法。同一时候也想用另外一个类的方法。有一个解决方法是。改动它们各自的接口。可是这是我们最不愿意看到的。这个时候Adapter模式就会派上用场了 适配器 模式有三种方式,一种是对象适配器,一种...

weixin_30832143的博客 116

一张图讲透银行个人外汇业务逻辑和实操

个人外汇业务主要分为结售汇和外币兑换两类,前者满足日常跨境需求,后者因投机属性多数银行已暂停。业务核心是利用汇率波动实现货币兑换,满足支付或投资需求。交易涉及客户分类、主流币种、多种渠道和汇率计算规则,需区分直接/间接标价法判断汇率走势。银行通过"货币兑换"科目核算损益,采用期末折算确认盈亏。监管要求包括5万美元年度额度、合法渠道、真实性原则及大额申报等。随着跨境金融数字化发展,掌握基础逻辑和合规要求是安全参与外汇业务的关键。

银行信息系统应用架构详解 288

ARM6818嵌入式视频播放器:硬解加速与Framebuffer渲染实战

嵌入式Linux音视频系统是智能座舱、工业HMI等场景的核心能力,其本质是软硬协同的实时多媒体处理系统。原理上需打通内核驱动(如VPU硬件编解码、FIMD多图层合成)、用户空间框架(GStreamer pipeline定制、SDL2硬件渲染)与应用层同步机制(PTS/HTS双时钟校准)。技术价值在于显著降低CPU负载(硬解可压至15%以下)、提升启动速度(<1.2s首帧)并保障音画同步精度(±3ms级)。典型应用场景包括车载信息娱乐、边缘AI终端及无X11的工控显示设备。本文基于ARM6818平台,深入VP

weixin_32456485的博客 77

设计模式概述

文章目录创建型模式 根据设计模式的参考书Design Patterns - Elements of Reusable Object- Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 中所提到的,总共有 23 种设计模式。这些模式可以分为三大分类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。 创建型模式 这类模式提供创建对象的机制,能够提升已有代码

wh柒八九的博客 384

音乐生成 - 使用LSTM或Transformer模型进行音乐生成,如MIDI音乐生成。

在本篇博客中,我们将介绍如何使用LSTM和Transformer模型生成MIDI音乐。我们将首先概述音乐生成的一般流程,然后深入了解LSTM和Transformer模型的特点和实现。最后,我们将通过Python代码演示如何使用这两种模型生成MIDI音乐。

斌擎科技 1720

Java设计模式之Adapter模式

一、概述:提到Adapter适配器相信很多人都特别熟悉了,在我们开发中经常出现一些实现继承适配器去完成某项功能,使用最多的可能就是ListView和RecyclerView的是适配器了,不知道有没有同学想过适配器的作用呢?为什么要使用这些适配器?以及他们所带来的好处呢?下面我们举个例子:如果你去了某个地方,准备要给你的手机充电,发现整个房间的都是三孔插座,而你的手机充电器只能使用两空,这时你会去前...

浅谈Android 766

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java后端中的API设计模式:从Facade到Adapter的使用案例

这时,可以使用Facade模式来提供一个统一的支付接口和物流接口,同时使用Adapter模式来适配不同支付网关和物流服务的接口。今天,我们将重点探讨两种常用的设计模式——Facade模式和Adapter模式,并通过具体的Java代码示例来说明它们的使用场景和优势。Adapter模式用于将一个类的接口转换成客户端期望的接口,从而使得原本接口不兼容的类能够一起工作。Facade模式旨在为一组复杂的子系统接口提供一个统一的高层接口,从而使子系统更易于使用。类提供了一个统一的接口来处理不同的支付网关和物流服务。

聚娃科技开发者博客 673

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java设计模式adapter_Java设计模式 —— 适配器(Adapter)

# 标签: 读博客Adapter Pattern / Wrapper Pattern什么时候需要适配,需要包装?肯定是你给我的,现有的服务提供的不好用,我才需要给你进行一下包装再用,或者适配之后再用。Android中,数据的list能直接放到view上面么?不能吧,所以搞了个adapter适配一下,变成了一个封装类,这个封装类是可以安在view上,或者说给view提供数据源的。你笔记本电脑需要12...

weixin_33187773的博客 379

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

学习:java设计模式—Adapter模式

1、核心意图:     将一个类的接口转换成客户希望的另外一个接口,从而使得原本由于接口不兼容而不能一起工作的类可以一起工作。 该模式的目标是通过一个代理(这里是Adapter),在原来的类(Adaptee)和客户(Client)之间进行协调,从而达到兼容的目的。其核心是解决一致性的问题。 2、身边实例: 在我们实际生活中也很容易看到这方面的例子,比如我们要和一个外国人打交道,例如韩国

I_can_move_you的专栏 930

java设计模式—Adapter模式

1、核心意图:     将一个类的接口转换成客户希望的另外一个接口,从而使得原本由于接口不兼容而不能一起工作的类可以一起工作。 该模式的目标是通过一个代理(这里是Adapter),在原来的类(Adaptee)和客户(Client)之间进行协调,从而达到兼容的目的。其核心是解决一致性的问题。   2、身边实例: 在我们实际生活中也很容易看到这方面的例子,比如我们要和一个外国人打交道,例如韩...

weixin_33938733的博客 83

Java学习之道:java设计模式—Adapter模式

1、核心意图:     将一个类的接口转换成客户希望的另外一个接口,从而使得原本由于接口不兼容而不能一起工作的类可以一起工作。 该模式的目标是通过一个代理(这里是Adapter),在原来的类(Adaptee)和客户(Client)之间进行协调,从而达到兼容的目的。其核心是解决一致性的问题。   2、身边实例: 在我们实际生活中也很容易看到这方面的例子,比如我们要和一个外国人打交道,例如韩

Java小迷的专栏 782

设计模式-Adapter模式 (JAVA描述)

设计模式-Adapter适配器模式

luoliwoshang的博客 293

设计模式(JAVA)——Adapter模式

设计模式(JAVA)之Adapter,两种方式,继承,委托,含uml图

读书 好学 求知 313

设计模式(Java)—Adapter模式

一、适配器的角色 在程序的世界中,经常会存在现有的程序无法直接使用,需要做适当的变换之后才能使用的情况。这种用于填补“现有程序”和“所需程序”之间的差异的设计模式就是Adapter模式。 Adapter模式有以下两种: 1.类适配器模式(使用继承的适配器) 2.对象适配器模式(使用委托的适配器) 二、使用继承的适配器 示例程序:将输入的字符串显示为(Hello)或是Hello的简单程序...

zoinsung_lee的博客 727

对于Java设计模式Adapter模式的小白理解

什么是适配器模式 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能,也就是将两个不兼容的功能通过Adapter兼容在一起。 例如,笔记本上的那个拖在外面的黑盒子就是个适配器,一般你在中国能用,在日本也能用,虽然两个国家的的电源电压不同,中国是220V,日本是110V,但是这个适配器能够把这些不同的电压转换为你...

Vanity_xiye的博客 259

Java设计模式6:适配器模式(Adapter)

Adapter(适配器)模式 意图 将一个类的接口转换成客户希望的另一个借口。Adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。也叫做包装器(Wrapper),可以理解为生活中的插座转换器。 #适用性 1、想使用一个已经存在的类,而他的接口不符合你的要求 2、你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作 3、想使用一些已经存在的子类...

jay_boolean的博客 270

设计模式之适配器模式(Adapter)【Java实现】

适配器模式(Adapter Pattern): 定义 适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。 意图:将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作...

362

Java 设计模式 Adapter 类适配器 模式

Java 设计模式 Adapter 类适配器 模式 Adapter模式用于现有的程序无法直接使用,需要做适当的变换之后才能使用的情况。 涉及到的角色 Target对象:定义所需的方法。 Client请求者:使用Target对象所定义的方法。 Adaptee被适配:是一个持有既定方法的角色。 Adapter适配:使用Adaptee角色来满足Target角色。 /** * Target 对象 * @author 托马斯小火车喷雾又喷烟 * */ public interface S

5万+
上一篇: 基于RecyclerView实现的动态图片轮播器
下一篇: java设计模式——导引
createchance
博客等级 码龄15年 156粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值