【PHP设计模式06】适配器模式(变压器模式)

【适配器模式】

      适配器模式,也叫做变压器模式 或者 包装器模式,将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,也可以理解为某种协议,使两个不同的类之间可以通过协议合作来达到某种目的。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。

      结构:

  • 目标(Target):定义客户想要用还不能直接用的 特定领域的接口(或抽象类),也可以是具体类。(由于php不支持多继承,在类适配器中只能是接口)
  • 被适配者(Adaptee):原本已存在的 需要适配的 具体类或接口,一般是一个具体类,包含了客户希望使用的业务方法。
  • 适配器(Adapter):适配器是一个类,负责实现目标接口,并包含被适配者的引用,即对被适配者接口(抽象类)与目标接口进行适配。在类适配器模式中,它通过实现Target接口并继承Adaptee类来使两者产生联系;在对象适配器中,它通过继承Target并关联一个Adaptee对象使二者产生联系。

        示例:下面以充电器为例,在不同国家电压的标准不同,在国外需要适配:

  1、类适配器(继承+实现):

  • 原有充电器具体类(被适配者Adaptee)Charge.php:
<?php
namespace app\design06\controller;
//充电器具体类࿰

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

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

相关文章

【JavaEE】 spring boot的配置文件详解

spring boot的配置文件详解 文章目录 spring boot的配置文件详解常用配置spring boot的配置文件1. properties 文件2. YAML 文件3. 多环境配置4. 配置文件优先级5. 配置属性注入特殊说明 properties配置文件基本语法 例子peoperties文件的缺点 YML配置文件YML使用yml 配置不同数…

Android学习笔记 service启动方式

在Android系统中&#xff0c;Service的启动方式主要有两种&#xff1a; ## 1. startService 这种方式用于启动一个服务执行后台任务&#xff0c;不进行通信。当你调用startService()方法启动服务后&#xff0c;服务会一直无限期运行下去&#xff0c;只有在外部调用了stopServi…

关于Sora的基本情况

Sora 是一种由 OpenAI 开发的 AI 模型&#xff0c;它能够根据文本指令创建逼真的、富有想象力的视频场景。它使用一种称为“扩散模型”的技术来生成视频&#xff0c;该技术从随机噪声开始&#xff0c;并逐渐将其转化为具有所需特征的图像或视频帧。 功能 Sora 的主要功能包括…

守护绿色屏障:智能高压森林应急消防泵|恒峰智慧科技

在茂密的森林中&#xff0c;树木蓊郁&#xff0c;绿意盎然。这里是大自然赋予我们的宝贵财富&#xff0c;是我们人类赖以生存的重要资源。然而&#xff0c;随着人类活动的增加&#xff0c;森林火灾频发&#xff0c;给我们的生活带来了极大的威胁。为了保护这片绿色屏障&#xf…

springstarter

starter 例如我想要在SpringBoot项目中集成Redis&#xff0c;那么我只需要加入spring-data-redis-starter的依赖&#xff0c;并简单配置一下连接信息以及Jedis连接池配置就可以。这为我们省去了之前很多的配置操作。甚至有些功能的开启只需要在启动类或配置类上增加一个注解即…

HUAWEI Programming Contest 2024(AtCoder Beginner Contest 342)

D - Square Pair 题目大意 给一长为的数组&#xff0c;问有多少对&#xff0c;两者相乘为非负整数完全平方数 解题思路 一个数除以其能整除的最大的完全平方数&#xff0c;看前面有多少个与其余数相同的数&#xff0c;两者乘积满足条件&#xff08;已经是完全平方数的部分无…

Linux系统前后端分离项目

目录 一.jdk安装 二.tomcat安装 三.MySQL安装 四.nginx安装 五.Nginx负载均衡tomcat 六.前端部署 一.jdk安装 1. 上传jdk安装包 jdk-8u151-linux-x64.tar.gz 进入opt目录&#xff0c;将安装包拖进去 2. 解压安装包 这里需要解压到usr/local目录下&#xff0c;在这里新建一个…

LINUX ntp时间服务器编译

下载 Index of /~ntp/ntp_spool/ntp4 https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2.8p17.tar.gz 编译openssl LINUX下载编译OpenSSL_openssl-1.0.2u编译-CSDN博客 编译 DEST_DIR/home/toybrick/ntp_serverif [ -d ${DEST_DIR} ]; thenrm -rf ${DEST_DIR} fi.…

Python in Excel的一些使用心得

获得Python in Excel的preview之后, 就在任意的Excel单元格里可以敲py(来写Python代码了。不过Python in Excel并没有什么专门的文档, 只有一些_Get Started_教程, 比如link 1, link 2, 剩下的就是pandas, matplotlib, seaborn等lib的文章&#xff0c;和Python in Excel并没有什…

Python算法题集_实现 Trie [前缀树]

Python算法题集_实现 Trie [前缀树] 题208&#xff1a;实现 Trie (前缀树)1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【定义数据类默认字典】2) 改进版一【初始化字典无额外类】3) 改进版二【字典保存结尾信息无额外类】 4. 最优算法5. 相关…

OpenGL-ES 学习(5)---- GPU 基础知识

目录 Arm GPU 架构说明移动系统的特点渲染管线渲染管线简介几何处理像素处理 渲染管线的硬件IMR(立即渲染)TBR(Tile Based Rendering) 渲染硬件的实现CPUGPU 设计 Mali Shadercore重要补充 Arm GPU 架构说明 UtGard: 比较早的架构,支持到 OpenGL-ES 2.0&#xff0c;VertexShad…

【小尘送书-第十四期】《高效使用Redis:一书学透数据存储与高可用集群》

大家好&#xff0c;我是小尘&#xff0c;欢迎你的关注&#xff01;大家可以一起交流学习&#xff01;欢迎大家在CSDN后台私信我&#xff01;一起讨论学习&#xff0c;讨论如何找到满意的工作&#xff01; &#x1f468;‍&#x1f4bb;博主主页&#xff1a;小尘要自信 &#x1…

Vue组件间的通信详解

在Vue中&#xff0c;组件之间的通信可以有多种方式实现&#xff1a; Props 和 $emit Props&#xff1a;父组件向子组件传递数据时&#xff0c;通过属性绑定&#xff08;v-bind 或 :&#xff09;将数据作为属性传给子组件。子组件需要在props选项中声明它接收的属性列表。**emit…

Base64 编码 lua

Base64 编码 -- Base64 字符表 local base64_chars { A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,…

文献阅读:Large Language Models are Null-Shot Learners

文献阅读&#xff1a;Large Language Models are Null-Shot Learners 1. 文章简介2. 方法介绍3. 实验考察 & 结论 1. 基础实验 1. 实验设计2. 实验结果 2. 消融实验 1. 小模型上的有效性2. ∅CoT Prompting3. 位置影响4. 组成内容 4. 总结 & 思考 文献链接&#xff1…

gitlab 忘记root密码,修改root密码

1.使用root用户登录服务器 2.进入GitLab的安装目录&#xff0c;一般是 /opt/gitlab/ 3.执行以下命令重置密码&#xff1a; sudo gitlab-rails consoleuser User.where(id: 1).first user.password new password user.password_confirmation new password user.save! 退出…

openEuler22.03 LTS中配置vsftp服务器

一、说明 配置环境&#xff1a;VMware虚拟机中安装openEuler 22.03 LTS系统&#xff0c;并确保该Linux服务器能访问Internet。 FTP服务器的身份认证模式 vsftpd服务提供以下3种身份认证模式&#xff0c;前两种模式比较常见&#xff0c;第3种模式是vsftpd的特有的服务模式。 …

代码随想录算法刷题训练营day23

代码随想录算法刷题训练营day23&#xff1a;LeetCode(669)修剪二叉搜索树、LeetCode(108)将有序数组转换为二叉搜索树、LeetCode(538)把二叉树转化为累加树 LeetCode(669)修剪二叉搜索树 题目 代码 /*** Definition for a binary tree node.* public class TreeNode {* …

【Vue】Vue双向绑定原理

【Vue】Vue双向绑定原理 定义&#xff1a;数据变化视图会自动更新&#xff0c;视图变化数据也会更新原理&#xff1a;通过数据劫持和发布订阅模式实现的实现 定义&#xff1a;数据变化视图会自动更新&#xff0c;视图变化数据也会更新 比如说&#xff0c;当在输入框输入文字时…

SocketWeb实现小小聊天室

SocketWeb实现小小聊天室 消息推送的常见方式轮询长轮询SSE&#xff08;server-sent event&#xff09;&#xff1a;服务器发送事件WebSocketWebSocket简介WebSocket API 实现小小聊天室实现流程消息格式客户端-->服务端服务端-->客户端 消息推送的常见方式 轮询 浏览器…