当前位置: 首页 > news >正文

一句话设计模式12:适配器模式

适配器模式: 继承原对象,持有目标对象;


文章目录

  • 适配器模式: 继承原对象,持有目标对象;
  • 前言
  • 一、适配器模式的作用
  • 二、如何适配器模式
    • 直接上代码
  • 总结


前言

适配器模式一般使用场景是: 将一个类(接口)转换成客户希望的另外一个类(接口)。其中适配器充当一个假的原类的作用;


一、适配器模式的作用

主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求是现有接口无法满足的;

二、如何适配器模式

例如我现在只能获取到一个类是Target,但是我想用另一个类 NewTarget 中的sout方法,这里我们就需要做一个适配

适配之后,当前依赖的是适配的类, 并不是 NewTarget ,做到了解耦

直接上代码

  1. 我目前持有的对象Target
public class Target {public void required() {System.out.println("正常的方法访问!");}
}
  1. 我要调用的目标对象NewTarget
public class NewTarget {public void sout() {System.out.println("难搞客户的特殊方法请求!");}
}
  1. 适配器
/*** 适配器: 继承原有对象,持有目标对象*/
public class Adapter extends Target {NewTarget newTarget = new NewTarget();@Overridepublic void required() {newTarget.sout();}
}
  1. 测试类中测试
public class Client {// 目标对象是NewTargetpublic static void main(String[] args) {// 我能拿到的Target target = new Adapter();target.required();}
}

执行结果:
调用的是目标类中的方法

总结

  1. 表面上,我依然调用的Target方法
  2. 但是Adapter继承了Target,并重写了它的方法
  3. 表面上调用Target实际上调用的是Adapter,而Adapter实际上调用的是目标NewTarget中的sout方法
http://www.lryc.cn/news/171470.html

相关文章:

  • iOS加固保护技术:保护你的iOS应用免受恶意篡改
  • 阿里云产品试用系列-云桌面电脑
  • vue3使用vue-virtual-scroller虚拟滚动遇到的问题
  • c#用Gnuplot画图源码
  • 【前端设计模式】之工厂模式
  • Hive 的函数介绍
  • 【Linux基础】第31讲 Linux用户和用户组权限控制命令(三)
  • html form表单高级用法
  • openssl升级
  • 【数据结构】图的遍历:广度优先(BFS),深度优先(DFS)
  • Mysql 学习总结(89)—— Mysql 库表容量统计
  • virtualBox安装配置使用
  • 北斗导航 | RTD、RTK完好性之B值、VPL与HPL计算(附B值计算matlab源代码)
  • more often than not 的含义
  • 【Linux】Linux环境配置安装
  • 从零学习开发一个RISC-V操作系统(二)丨GCC编译器和ELF格式
  • 论文阅读_大语言模型_Llama2
  • 当量因子法、InVEST、SolVES模型等多技术融合在生态系统服务功能社会价值评估中的应用及论文写作、拓展分析
  • k8s Limits 限制内存
  • 单片机第三季-第三课:STM32开发板原理图、配置、浮点运算单元
  • 观察者模式 发布-订阅模式(设计模式与开发实践 P8)
  • 【日常业务开发】Java实现异步编程
  • 学习笔记|模数转换器|ADC原理|STC32G单片机视频开发教程(冲哥)|第十七集:ADC采集
  • OpenCV实现“蓝线挑战“特效
  • 容器管理工具 Docker生态架构及部署
  • js判断数据类型的方法
  • 达梦数据库随系统开机自动启动脚本
  • Python开发利器之VS Code
  • 【Axure视频教程】输入框控制滑动评分条
  • 【学习笔记】[AGC064C] Erase and Divide Game