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

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

适配器模式:属于结构型模式,结合了两个独立接口的功能,作为 两个不兼容的接口之间的桥梁
介绍
  • 意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
  • 主要解决问题:1、系统需要使用现有的类,而此类的接口不符合系统的需要。 2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。 3、通过接口转换,将一个类插入另一个类系中。
  • 关键代码:1、目标(Target)接口: 定义客户端使用的特定接口。
    2、被适配者(Adaptee): 需要被适配的接口。
    3、适配器(Adapter):将被适配者的接口转换成目标接口,使得客户端可以使用被适配者。
  • 优点:1、使得客户端代码与被适配者解耦,客户端不需要知道被适配者的具体接口。2、可以复用现有的类,而不需要修改其源代码。
  • 缺点:如果系统中存在大量不同的适配器,可能会使系统变得复杂。
示例

假设有一个中国插头的设备,但你在美国,这里的插座是美国标准的。你可以创建一个适配器,将中国插头适配到美国插座。

// 目标接口
interface USPlug {void plugIn();
}// 被适配者
class ZHPlug {void insert() {System.out.println("Inserting ZH plug");}
}// 适配器
class ZHToUSPlugAdapter implements USPlug {private ZHPlug zhPlug;public ZHToUSPlugAdapter(ZHPlug zhPlug) {this.zhPlug = zhPlug;}@Overridepublic void plugIn() {zhPlug.insert();System.out.println("Adapter converting to US plug");}
}// 客户端
public class Client {public static void main(String[] args) {// 使用适配器ZHPlug ukPlug = new ZHPlug();USPlug usPlugAdapter = new ZHToUSPlugAdapter(zhPlug);// 客户端只需要与目标接口交互usPlugAdapter.plugIn();}
}
http://www.lryc.cn/news/236627.html

相关文章:

  • Axios传值的几种方式
  • git pull 报错 error object file is empty , The remote end hung up unexpectedly
  • 手机数码类展示预约小程序效果如何
  • 图神经网络:消息传递算法
  • 安全+Linux!IBM新一代大型机Z14全新发布
  • Java中的局部变量和成员变量的区别
  • 基于C++实现循环赛日程表(分治算法)
  • 基于uni-app的汽车租赁app的设计与实现
  • 3.8-镜像的发布
  • Navicat 基于 GaussDB 主备版的快速入门
  • String的字符串拼接
  • 反渗透水处理成套设备有哪些
  • DPC15 国产带有 SPI 接口的独立 CAN 控制器兼容替代MCP2551
  • 【ELK01】ELK简介以及ElasticSearch安装、ES客户端工具-Head安装、报错问题整理
  • 根据音频绘制频谱
  • SSL证书对网站SEO的好处
  • YB506AB是一款理电池充、放电管理专用芯片,集成锂电池充电管理和降压DC-DC电路。
  • Linux | C语言中volatile关键字的理解
  • 汇编层面有三个主要的操作对象
  • React中的Redux:简介和实例代码
  • Modbus转Profinet网关在金银精炼控制系统中应用案例
  • 小程序商城免费搭建之java商城 电子商务Spring Cloud+Spring Boot+二次开发+mybatis+MQ+VR全景+b2b2c
  • Rabin加解密算法(python3)
  • 【带头学C++】----- 七、链表 ---- 7.5 学生管理系统(链表--上)
  • (四)什么是Vite——冷启动时vite做了什么(源码、middlewares)
  • Docker部署MinIO对象存储服务器结合Cpolar实现远程访问
  • C#入门(1):程序结构、数据类型
  • Scala---元组
  • 【Linux】冯诺依曼体系结构、操作系统、进程概念、进程状态、环境变量、进程地址空间
  • 【hive-解决】HiveAccessControlException Permission denied: CREATEFUNCTION