Spring 设计模式之适配器模式

Spring 设计模式之适配器模式

  • 适配器模式
  • 用到的场景
  • java举例

适配器模式

适配器模式(Adapter Pattern)是一种结构型设计模式,它允许接口不兼容的类一起工作。
其核心思想是通过一个适配器类将不兼容的接口转换成客户端期望的另一个接口,使原本由于接口不兼容而不能一起工作的那些类可以一起工作

两者通过适配器一起工作,强调

1.通过实现目标接口和内部组合
2.实现的目标接口一定是旧对象
3.不是通过继承

用到的场景

1.新的对象,需要旧对象里面的方法
2.A有,B没有,B就通过适配器去获取A里面的元素(方法)

需要存在的核心类:
1.适配器类(实现旧对象)

java举例

// 旧的打印机接口  
public interface OldPrinter {  void printOldWay(String content);  
}// 旧的打印机实现  
public class OldPrinterImpl implements OldPrinter {  @Override  public void printOldWay(String content) {  System.out.println("使用旧的方式打印内容: " + content);  }  
}// 新的打印机接口  
public interface NewPrinter {  void printNewWay(String content);  
}// 适配器类,将旧的打印机适配为新的打印机  
public class PrinterAdapter implements NewPrinter {  private OldPrinter oldPrinter;  public PrinterAdapter(OldPrinter oldPrinter) {  this.oldPrinter = oldPrinter;  }  @Override  public void printNewWay(String content) {  // 适配过程:将新方式的内容适配为旧方式的内容进行打印  oldPrinter.printOldWay(content);  }  
}// 新的文档类,它需要一个新打印机来打印  
public class NewDocument {  public void print(NewPrinter printer) {  printer.printNewWay("这是一个新文档的内容");  }  
}// 调用使用示例
public class AdapterPatternDemo {  public static void main(String[] args) {  // 创建一个旧的打印机实例  OldPrinter oldPrinter = new OldPrinterImpl();  // 使用适配器将旧的打印机适配为新的打印机  NewPrinter newPrinter = new PrinterAdapter(oldPrinter);  // 创建一个新的文档并打印  NewDocument document = new NewDocument();  document.print(newPrinter);  }  
}

运行结果

使用旧的方式打印内容: 这是一个新文档的内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/884188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vi —— 终端中的编辑器

目标 vi 简介打开和新建文件三种工作模式常用命令分屏命令常用命令速查图 01. vi 简介 1.1 学习 vi 的目的 在工作中,要对 服务器 上的文件进行 简单 的修改,可以使用 ssh 远程登录到服务器上,并且使用 vi 进行快速的编辑即可常见需要修改…

stm32cubeIde 使用笔记

划分flash空间 需要更改STM32xxx_FLASH.ld文件 输出其他格式文件

图片批量处理神器将每个文件夹中的多张图片拼接,一键实现横向和纵向的长图拼接效果,让你的图片处理更高效

是不是经常面对一堆图片文件夹,想要把它们里面的宝贝图片一一拼接起来,却又被繁琐的操作吓得直摇头?别担心,今天我要给大家介绍一位图片处理界的超级英雄——首助编辑高手软件!它就像是一位拥有魔法的图片大师&#xf…

【JVM详解JVM优化】聊聊JVM优化

简介: 前面两期文章讲了JVM内存模型:【JVM详解&JVM优化】JVM内存模型-CSDN博客 以及JVM垃圾回收机制:【JVM详解&JVM优化】JVM垃圾回收机制-CSDN博客 在本篇文章中,我们将深入探讨Java虚拟机(JVM)…

通俗易懂的餐厅例子来讲解JVM

餐厅版本 JVM(Java虚拟机)可以想象成一个虚拟的计算机,它能够运行Java程序。为了让你更容易理解,我们可以用一个餐厅的比喻来解释JVM: 菜单(Java源代码): 想象一下,Java…

一文搞懂各种Attention机制

1.各种Attention 最近在重读Transformer论文的过程中,结合其他看过的资料,对各种Attention概念有进一步的了解。回顾最初刚接触时候的迷糊,觉得有必要写一篇文章记录一下对各种attention新的理解。 2.论文中的Transformer架构图 先上经典的…

Scala 的trait

在Scala中,trait是一种特殊概念。trait可以作为接口,同时也可以定义抽象方法。类使用extends继承trait,在Scala中,无论继承类还是继承trait都用extends关键字。在Scala中, 类继承trait后必须实现其中的抽象方法&#x…

Zipkin使用指南分布式追踪核心概念与架构详解

1. 简介 什么是Zipkin Zipkin是一个分布式追踪系统,主要用于监控和分析微服务架构中的调用链路。它帮助开发者和运维团队深入理解服务调用路径,从而识别性能瓶颈、异常或故障点。Zipkin最初是由Twitter开源的,当前已成为微服务追踪的流行解…

Python+Appium+Pytest+Allure自动化测试框架-代码篇

文章目录 自动化测试框架工程目录示例测试代码示例结果查看allurepytest编写pytest测试样例的规则pytest conftest.py向测试函数传参 appium启动appium服务代码端通过端口与appium服务通信对设备进行操作在pytest测试用例中调用appium 更多功能 PythonAppiumPytestAllure自动化…

【C++】红黑树的Iterator改造以及mapset的模拟实现与封装

目录 01.红黑树的迭代器 operator: operator*、-> operator、! 02.红黑树的改造 begin和end方法 keyOfValue insert方法 find方法 size方法 clear方法 03.map&set的模拟实现 01.红黑树的迭代器 前面的博客我们介绍了红黑树的底层原理并手撕了一个自己的红…

微信小程序服务通知

项目中用到了小程序的服务消息通知,通知订单状态信息,下边就是整理的一下代码,放到项目中,把项目的小程序appid和小程序的secret写进去,直接运行即可 提前申请好小程序服务信息通知短信模板,代码需要用到模…

linux命令行的艺术

文章目录 前言基础日常使用文件及数据处理系统调试单行脚本冷门但有用仅限 OS X 系统仅限 Windows 系统在 Windows 下获取 Unix 工具实用 Windows 命令行工具Cygwin 技巧 更多资源免责声明 熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际…

【vue】11.Vue 3生命周期钩子在实践中的具体应用

Vue 3的生命周期钩子为开发者提供了在不同阶段操作组件的强大能力。本文将带您了解每个生命周期钩子的使用场景,并通过简单的案例来展示它们在实际开发中的应用。 1. 创建阶段(Creation Hooks) beforeCreate 进行一些初始化操作&#xff0c…

2024年最新版SSL证书

SSL证书行业变动很大,随着操作系统,浏览器新版本不断增加,对SSL证书兼容性要求越来也高,对于安全性也有所提升,主流CA机构根证书及交叉链迎来了换新,这是为了延续下一个20个年的安全计划的提前不如&#xf…

Spark入门到实践

Spark入门到实践 一、Spark 快速入门1.1 Spark 概述1.2 Spark 最简安装1.3 Spark实现WordCount1.3.1 下载安装Scala1.3.2 添加Spark依赖1.3.3 Scala实现WordCount1.3.4 通过IDEA运行WordCount1.3.5 IDEA配置WordCount输入与输出路径1.3.6 通过IDEA运行WordCount1.3.7 查看运行结…

vue、小程序腾讯地图开放平台使用

一、登录账号 腾讯地图API 官方文档: 腾讯位置服务 - 立足生态,连接未来 二、申请秘钥 key 从首页【开发文档】-【微信小程序 SDK】进到微信小程序的开发文档:微信小程序JavaScript SDK | 腾讯位置服务 然后我们根据【Hello World】的提示…

linux的文件IO操作---read函数如何退出

关于 read 函数和 EOF(End Of File)的概念。1. EOF 的定义: EOF 是一个信号,表示文件的末尾已经被到达,没有更多的数据可以读取。在 Unix 和 Linux 系统中,EOF 通常与文件的结束关联,但也可以…

前端必知必会-JavaScript 对象

文章目录 JavaScript 对象对象属性对象方法JavaScript 变量JavaScript 对象JavaScript 对象定义JavaScript 对象文字创建 JavaScript 对象使用 new 关键字对象属性访问对象属性 JavaScript 对象方法JavaScript 原始值JavaScript 对象是可变的 总结 JavaScript 对象 现实生活中…

电赛入门之软件stm32keil+cubemx

hal库可以帮我们一键生成许多基本配置,就不需要自己写了,用多了hal库就会发现原来用基本库的时候都过的什么苦日子(笑 下面我们以f103c8t6,也就是经典的最小核心板来演示 一、配置工程 首先来新建一个工程 这里我们配置rcc和sys&…

漏洞分析技术实践_数组越界漏洞

1. 基础知识 1.1 数组原理 数组是一段连续的内存存储空间&#xff0c;包含多个类型相同的元素。通过数组名可以在内存中找到对应的数组空间&#xff0c;并且可以通过数组名和索引来访问数组中的元素。 #include <stdio.h>int main(){int a[10];int i0;printf("a’…