初识适配器模式

ops/2024/10/22 15:06:34/

适配器模式


引入

生活中的例子:当我们使用手机充电时,充电器起到了转换器的作用,它将家用的220伏特电压转换成适合手机充电的5伏特电压。

适配器模式的三种类型

命名原则:适配器的命名应基于资源如何传递给适配器来进行。

  1. 适配器模式:这种方式直接通过类实现。在适配器(Adapter)中,源(src)被当做一个类直接继承。
  2. 对象适配器模式:这种方式通过持有对象来实现。在适配器(Adapter)中,源(src)作为一个对象被持有。
  3. 接口适配器模式:这种方式通过实现接口来应用。在适配器(Adapter)中,源(src)作为一个接口被实现。
具体代码示例
适配器模式类图

image-20241014231958151

适配器模式

package com.lucifer.A07_Adapter.classAdapter;
//适配器
public class voltageAdapter extends voltage220v implements Ivoltage5v{public int output5v() {int src = output220v();int dst = src/44;return dst;}
}

缺点:使用了继承,且适配器中有src,增加使用成本

对象适配器模式


package com.lucifer.A07_Adapter.objectAdapter;
//适配器
public class voltageAdapter implements Ivoltage5v {private voltage220v voltage220v;//通过构造器传入--聚合关系public voltageAdapter(com.lucifer.A07_Adapter.objectAdapter.voltage220v voltage220v) {this.voltage220v = voltage220v;}public int output5v() {int dst = 0;if(null!=voltage220v){int src = voltage220v.output220v();System.out.println("使用对象适配器进行转化");dst = src/44;System.out.println("适配完成");return dst;}else {return 0;}}
}

采用了合成复用原则(泛化->聚合)

接口适配器模式

package com.lucifer.A07_Adapter.interfaceAdapter;public class client_m1 {public static void main(String[] args) {absAdatpter absAdatpter = new absAdatpter(){//只需要关系需要使用的方法public void m1(){System.out.println("使用了m1的方法");}};absAdatpter.m1();}
}
在源码里面的使用
  1. SpringMvc 中的 HandlerAdapter, 就使用了适配器模式

  2. 使用 HandlerAdapter 的原因分析:

可以看到处理器的类型不同,有多重实现方式,那么调用方式就不是确定的,如果需要直接调用 Controller 方
法,需要调用的时候就得不断是使用 if else 来进行判断是哪一种子类然后执行。那么如果后面要扩展 Controller,
就得修改原来的代码,这样违背了 OCP 原则。


http://www.ppmy.cn/ops/127599.html

相关文章

开源软件简介

一、开源运动的发起 近几十年,软件已经称为战略性的社会资源。各大软件供应商传统的对外封锁源代码的运营模式虽说有积极的一面,比如可以维护开发商的利益,使其可以持续地维护进一步开发的能力,以及可以保护软件商及客户的私密信息…

品牌私域核心

想要解决产品和流量问题,关键就在于启动品牌私域。 1、流量池搭建 私域是指品牌拥有可重复、低成本甚至免费触达用户的场域,是线上线下一体化的品牌自主经营阵地,也是品牌自主发展、掌握客户关系、线上线下联动的新业态。‌ 对于品牌来说&…

《柬埔寨语翻译通》App:技术驱动的高棉语学习与翻译解决方案,无需打字对着说话就能识别翻译的工具!

柬埔寨,东南亚一个神秘国度,以其独特的文化和语言吸引着全球旅行者和语言爱好者。为了帮助用户克服语言障碍,我们推出了《柬埔寨语翻译通》App,一款集成了翻译、学习、旅游辅助功能的多功能语言工具。 技术亮点与功能特性&#xf…

Django中的ModelForm组件

昨天开发项目的时候,发现在表单创建时,流程很繁琐,想这有没有简易方式去创建表单,结果查资料,发现django提供了一个非常简单实用且人性化的组件modelform,用起来贼快,还能做表单校验&#xff0c…

ESC服务器被暴力破解如何解决

使用fail2ban解决 黑客怎么暴力破解的?安装教程一些命令 黑客怎么暴力破解的? 他们一般是用脚本扫描公网上的ip地址, 一个个ping, 如果ping通了, 就开始以这个公网ip尝试连接服务器, 比如使用ssh, 接下来就输入密码了, 暴力破解他们一般都有密码表的, 一个个试, 密码简单很容…

临阵磨枪!这份软考中级集成案例分析答题万金油赶紧收藏

在系统集成项目管理工程师案例分析科目的考试中,主要分为“计算题”和“分析题”两大类。 计算题主要围绕着进度管理和成本管理进行出题,比如挣值计算、网络图、关键路径等等,一般占据一道大题。 而分析题呢主要占三道大题,主要…

Java设计模式六大原则

Java设计模式的六大原则是面向对象设计中的基本准则,帮助开发人员构建更灵活、可维护和可扩展的系统。这些原则包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则&#x…

无人机之自主飞行关键技术篇

无人机自主飞行指的是无人机利用先进的算法和传感器,实现自我导航、路径规划、环境感知和自动避障等能力。这种飞行模式大大提升了无人机的智能化水平和操作的自动化程度。 一、传感器技术 传感器是无人机实现自主飞行和数据采集的关键组件,主要包括&a…