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

C#设计模式之---适配器模式

适配器模式(Adapter Pattern)

适配器模式(Adapter Pattern)也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。适配器模式是一种结构型模式,一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

(1)类适配器模式

using System;
namespace ConsoleApplication
{//目标接口//现有的interface ITarget{void request();}//用户所期待的class Adaptee{public void specificRequest(){Console.WriteLine("适配者中的业务代码被调用!");}}//类适配器类class ClassAdapter : Adaptee, ITarget{public void request(){specificRequest();}}//客户端代码class Program{public static void Main(String[] args){Console.WriteLine("类适配器模式测试:");ITarget target = new ClassAdapter();target.request();}}
}

 (2)对象适配器模式

using System;
namespace ConsoleApplication
{//目标接口//现有的interface ITarget{void request();}//用户所期待的class Adaptee{public void specificRequest(){Console.WriteLine("适配者中的业务代码被调用!");}}//对象适配器类class ObjectAdapter : ITarget{private Adaptee adaptee;public ObjectAdapter(Adaptee adaptee){this.adaptee = adaptee;}public void request(){adaptee.specificRequest();}}//客户端代码class Program{public static void Main(String[] args){Console.WriteLine("对象适配器模式测试:");Adaptee adaptee = new Adaptee();ITarget target = new ObjectAdapter(adaptee);target.request();}}
}

 

相关文章:

C#设计模式之---适配器模式

适配器模式(Adapter Pattern) 适配器模式(Adapter Pattern)也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。适配器模式是一种结构型模式,一个适配使得因接口不兼容而不能在一起工作的类工作在一起…...

串口设备驱动

文章目录 一、串口简介二、Linux下串口驱动框架uart_driver 结构体uart_port 的添加与移除三、Linux下串口驱动工作流程四、Linux下串口应用开发终端工作模式多线程例程一、串口简介 串口全称叫做串行接口,通常也叫做 COM 接口,串行接口指的是数据一个一个的顺序传输,通信线…...

Nginx实现反向代理和负载均衡

Nginx安装 本文章主要介绍下,如何使用Nginx来实现反向代理和负载均衡,Nginx安装和基础知识,可参考我的这篇文章 Nginx安装。 Nginx实现反向代理 实现反向代理需要准备两台Nginx服务器。一台Nginx服务器A,ip为 192.168.206.140&…...

小米手机MIUI优化的影响

1. 小/红米手机的MIUI优化选项 2. MIUI优化选项的影响 2.1 MIUI优化会影响应用信息展示 MIUI优化选项会影响到应用信息的内容展示,具体如下图所示: 如果我们需要在应用信息里展示自启动入口,那我们就需要开启MIUI优化。 2.2 MIUI优化会影…...

【图论】kruskal算法

一.介绍 Kruskal(克鲁斯卡尔)算法是一种用于解决最小生成树问题的贪心算法。最小生成树是指在一个连通无向图中,选择一棵包含所有顶点且边权重之和最小的树。 下面是Kruskal算法的基本步骤: 将图中的所有边按照权重从小到大进行…...

Django框架:使用channels实现websocket,配置和项目实际使用

一、基本配置 依赖包: Django3.2 django-cors-headers3.5.0 redis4.6.0 #操作redis数据库的 channels3.0.0 #websocket channels-redis4.1.0 #通道层需要,依赖redis包项目目录结构: study_websocket --study_websocket --__init__.py --s…...

基于RK3588+FPGA+AI算法定制的智慧交通与智能安防解决方案

随着物联网、大数据、人工智能等技术的快速发展,边缘计算已成为当前信息技术领域的一个热门话题。在物联网领域,边缘计算被广泛应用于智慧交通、智能安防、工业等多个领域。因此,基于边缘计算技术的工业主板设计方案也受到越来越多人的关注。…...

AI面试官:LINQ和Lambda表达式(一)

AI面试官:LINQ和Lambda表达式(一) 当面试官面对C#中关于LINQ和Lambda表达式的面试题时,通常会涉及这两个主题的基本概念、用法、实际应用以及与其他相关技术的对比等。以下是一些可能的面试题目,附带简要解答和相关案…...

FPGA学习——FPGA利用状态机实现电子锁模拟

文章目录 一、本次实验简介二、源码及分析三、总结 一、本次实验简介 本次是实验是为了利用状态机模拟电子锁,相关要求如下: 顺序输入4位密码,密码为1234,用按键来键入密码用led灯指示键入第几位密码,(博…...

Bert经典变体学习

ALBert ALBERT就是为了解决模型参数量大以及训练时间过长的问题。ALBERT最小的参数只有十几M, 效果要比BERT低1-2个点,最大的xxlarge也就200多M。可以看到在模型参数量上减少的还是非常明显的,但是在速度上似乎没有那么明显。最大的问题就是这种方式其实…...

uniapp checkbox radio 样式修改

文章目录 通过查看代码,发现 before部分是设置样式的主要属性 我们要设置的话,就要设置checkbox::before的属性。 其中的content表示内容,比如内部的对勾 那么我们设置的时候,比如设置disabletrue的时候或者checkedtrue的时候&…...

电脑重启后VScode快捷方式失效,找不到Code.exe

问题描述 下班回家关了部分程序就直接关机了,回家后重启电脑发现vscode的快捷方式就失效了,提示Code.exe已被移动或删除。 解决方法 查看你的vscode安装目录,Microsoft VS Code目录下大概率会存在一个名为_的文件夹,然后会发现…...

C语言实现扫雷游戏

test.c源文件 - 扫雷游戏测试 game.h头文件 - 扫雷游戏函数的声明 game.c源文件 - 扫雷游戏函数的实现 1.布置雷 -- 存放雷的雷盘 9*9 数组设计成11*11 上下左右方各多一行,保证周围8的范围 雷 - 1 不是雷 - 0 2.排查雷 主题测试源文件代码 &…...

蓝图节点编辑器

打印字符串 第02章 蓝图结构 03 -注释和重新路由_哔哩哔哩_bilibili 第02章 蓝图结构 04 - 变量_哔哩哔哩_bilibili 第03章 蓝图简易门 01 - 箱子碰撞_哔哩哔哩_bilibili 第03章 蓝图简易门 02 - 静态Mesh和箭头_哔哩哔哩_bilibili 第03章 蓝图简易门 03 - 设置相对旋转节点_哔…...

MySql 知识大汇总

数据库索引 数据库索引是一种数据结构,用于提高数据库查询的速度和效率。索引可以看作是表中一列或多列的值的快速查找方式,类似于书籍的目录。通过创建索引,可以减少数据库的扫描量,加快数据的检索速度。 常见的索引类型 常见…...

深入浅出Pytorch函数——torch.sum

分类目录:《深入浅出Pytorch函数》总目录 相关文章: 深入浅出Pytorch函数——torch.Tensor 函数torch.sum有两种形式: torch.sum(input, *, dtypeNone):返回输入张量input所有元素的和。torch.sum(input, dim, keepdimFalse, *,…...

Git克隆文件不显示绿色勾、红色感叹号等图标

1、问题 Git和TorToiseGit安装后,Git克隆的文件不会显示绿色勾、红色感叹号等图标。 2、检查注册表 2.1、打开注册表 (1)WinR打开运行窗口,输入regedit,点击确定,打开注册表编辑器。 2.2、找如下路径 (1)找到路径 计算机\HKEY_…...

SOC FPGA之HPS模型设计(一)

目录 一、建立HPS硬件系统模型 1.1 GHRD 1.2 从0开始搭建HPS 1.2.1 FPGA Interfaces 1.2.1.1 General 1.2.1.2 AXI Bridge 1.2.1.3 FPGA-to-HPS SDRAM Interface 1.2.1.4 DMA Peripheral Request 1.2.1.5 Interrupts 1.2.1.6 EMAC ptp interface 1.2.2 Peripheral P…...

解决openstack重启swift服务后报错

swift重启报错 问题描述解决办法 问题描述 swift服务正常状态如下 [rootcontroller ~]# swift statAccount: AUTH_8bde12ff804e42498661b7454994c446Containers: 0Objects: 0Bytes: 0X-Put-Timestamp: 1690507907.67931X-Timestamp: 1690507907.67931X-Trans-Id: tx56d22fa13…...

[Linux]进程控制详解!!(创建、终止、等待、替换)

hello,大家好,这里是bang___bang_,在上两篇中我们讲解了进程的概念、状态和进程地址空间,本篇讲解进程的控制!!包含内容有进程创建、进程等待、进程替换、进程终止!! 附上前2篇文章…...

ChatGLM3-6B企业实操:离线环境下的技术问答机器人部署

ChatGLM3-6B企业实操:离线环境下的技术问答机器人部署 1. 项目概述 在当今企业环境中,数据安全和响应速度是技术问答系统的核心需求。传统的云端AI服务虽然方便,但存在数据泄露风险、网络依赖性强、响应延迟高等问题。特别是对于金融、医疗…...

避坑指南:OpenBMI运动想象实验中的‘跨被试’与‘不跨被试’到底怎么选?

避坑指南:OpenBMI运动想象实验中的‘跨被试’与‘不跨被试’到底怎么选? 当你第一次接触OpenBMI工具箱进行运动想象(Motor Imagery, MI)实验时,最令人困惑的决策之一就是如何选择数据划分策略。是采用**跨被试&#xf…...

如何轻松实现单机游戏分屏多人:Nucleus Co-Op完整指南

如何轻松实现单机游戏分屏多人:Nucleus Co-Op完整指南 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 还在为找不到联机伙伴而烦恼吗&a…...

**Flutter实战进阶:用自定义RenderObject打造高性能图表组件**在Flutter开发中,我们经

Flutter实战进阶:用自定义RenderObject打造高性能图表组件 在Flutter开发中,我们经常需要展示复杂的数据可视化效果,比如折线图、柱状图等。虽然社区已有不少成熟的图表库(如charts_flutter),但它们往往无法…...

GraphSAGE实战:用PyTorch Geometric实现工业级节点分类(含邻居采样优化技巧)

GraphSAGE工业级实战:PyTorch Geometric实现与亿级节点优化指南 当电商平台的日活用户突破千万量级时,传统的用户行为预测模型开始显露出明显的局限性。静态的特征工程无法捕捉用户间复杂的交互关系,而基于全图计算的GNN方法又难以应对实时更…...

UI-TARS-desktop场景应用:自动生成销售报告与更新库存实战

UI-TARS-desktop场景应用:自动生成销售报告与更新库存实战 1. 场景痛点与解决方案 1.1 传统销售管理的效率瓶颈 在零售和电商行业中,销售数据分析和库存管理是日常运营的核心工作。传统方式通常需要: 手动从多个系统导出销售数据人工整理…...

SM4算法在嵌入式平台的轻量化移植与优化实践

1. SM4算法与嵌入式平台适配挑战 SM4作为我国自主设计的商用分组密码标准,在物联网设备安全领域应用广泛。但直接将OpenSSL中的SM4实现移植到STM32等嵌入式平台时,开发者常会遇到三大难题: 代码体积膨胀:OpenSSL的SM4实现依赖大量…...

从GCC-PHAT到深度学习:一种融合特征与神经网络的声源定位实践

1. 声源定位技术的前世今生 第一次接触声源定位是在2016年的一个智能音箱项目上,当时团队需要实现"唤醒词定向响应"功能。我们尝试了各种传统算法,最终在GCC-PHAT和SRP-PHAT之间反复调试的场景至今记忆犹新。这种让机器"听声辨位"的…...

Google 地图事件:探索、挑战与未来展望

Google 地图事件:探索、挑战与未来展望 引言 Google 地图作为全球最受欢迎的地图服务之一,自2005年推出以来,已经深入到人们生活的方方面面。然而,在这段时间里,Google 地图也经历了一系列事件,包括技术挑战、政策争议以及市场竞争等。本文将围绕这些事件,对 Google 地…...

ESP32 LVGL8.1 —— 消息框进阶:自定义按钮与事件处理实战

1. ESP32与LVGL8.1消息框基础认知 第一次接触ESP32和LVGL8.1的消息框功能时,我完全被它的灵活性震惊了。想象一下,你正在开发一个智能家居控制面板,当用户操作不当或者系统需要确认时,弹出一个美观的对话框是多么自然的事情。这就…...