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

设计模式_解释器模式

解释器模式 

案例

角色

1 解释器基类                 (BaseInterpreter)

2 具体解释器1 2 3...        (Interperter 1 2 3 )

3 内容                              (Context)

4 用户                              (user)

       

  流程

(上下文) ---- 传给排好顺序的解释器(可以通过配置文件信息排序)

              ---- 得到(修改后的上下文) 

代码

角色 Context

// 内容
public class Context
{private string text = null;public Context(string text){this.text = text;}public void Set(string newText){text = newText;}public string Get(){return text;}}

角色 BaseInterpreter

// 解释器基类
public abstract class BaseInterpreter
{public abstract void Conversion(Context context);
}

角色 Interpreter1


public class Interpreter1 : BaseInterpreter
{public override void Conversion(Context context){// 1 改为 A string text = context.Get();char[] c = text.ToCharArray();for (int i = 0; i < c.Length; i++){if (c[i] == '1'){c[i] = 'A';}}context.Set(new string(c));}
}

角色 Interpreter2

        和1类似 仅仅 2=B

角色 Interpreter3 

        和1类似 仅仅 3=C

角色 用户

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class Player : MonoBehaviour
{// 显示出内容public GameObject obj = null;void Start(){// 上下文Context context = new Context("123456789");// 创建解码List<BaseInterpreter> interpreterList = new List<BaseInterpreter>();interpreterList.Add(new Interpreter1());interpreterList.Add(new Interpreter2());interpreterList.Add(new Interpreter3());// 开始解码foreach (var item in interpreterList){item.Conversion(context);}obj.GetComponent<Text>().text = context.Get();}}

运行结果

相关文章:

设计模式_解释器模式

解释器模式 案例 角色 1 解释器基类 &#xff08;BaseInterpreter&#xff09; 2 具体解释器1 2 3... (Interperter 1 2 3 ) 3 内容 (Context) 4 用户 (user) 流程 (上下文) ---- 传…...

【算法基础】数学知识

质数 质数的判定 866. 试除法判定质数 - AcWing题库 时间复杂度是logN #include<bits/stdc.h> using namespace std; int n; bool isprime(int x) {if(x<2) return false;for(int i2;i<x/i;i){if(x%i0) return false;}return true; } signed main() {cin>&g…...

PDCA循环

目录 1.认识PDCA&#xff1a; 2.PDCA循环的经典案例 3.PDCA的四个阶段和八个步骤 4.PDCA循环的优缺点&#xff1a; 5.案例 6.其他作用 1.认识PDCA&#xff1a; PDCA循环最早由美国质量统计控制之父Shewhat&#xff08;休哈特&#xff09;提出的PDS&#xff08;Plan Do Se…...

Redis 缓存雪崩、缓存穿透、缓存击穿

Redis 是一种常用的内存缓存工具&#xff0c;但在某些情况下&#xff0c;它可能会遭受缓存雪崩、缓存穿透和缓存击穿等问题。下面是一些预防这些问题的建议&#xff1a; 1、缓存雪崩 缓存雪崩指的是在某个时间点上&#xff0c;大量的缓存数据同时失效或过期&#xff0c;导致大…...

Android Media3 ExoPlayer 开启缓存功能

ExoPlayer 开启播放缓存功能&#xff0c;在下次加载已经播放过的网络资源的时候&#xff0c;可以直接从本地缓存加载&#xff0c;实现为用户节省流量和提升加载效率的作用。 方法一&#xff1a;采用 ExoPlayer 缓存策略 第 1 步&#xff1a;实现 Exoplayer 参考 Exoplayer 官…...

MyBatis注解开发

MyBatis常用注解 注解对应XML说明Insert< insert>新增SQLUpdate< update>更新SQLDelete< delete>删除SQLSelect< select>查询SQLParam–参数映射Results< resultMap>结果映射Result< id>< result>字段映射 开发流程&#xff1a; 1…...

C# Onnx Yolov8 Cls 分类

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System…...

Fiddler常用的快键键

Fiddler有很多常用的快捷键&#xff0c;这些快捷键可以帮助你更快速地完成任务。以下是一些常用的快捷键&#xff1a; F12&#xff1a;启动/停止抓包。 CtrlR&#xff1a;打开FiddlerScript窗口。 CtrlH&#xff1a;切换到 Inspector 页签的 Header 视图。 CtrlT&#xff1a;切…...

【Linux】生产消费模型 + 线程池

文章目录 &#x1f4d6; 前言1. 生产消费模型2. 阻塞队列2.1 成员变量&#xff1a;2.2 入队(push)和出队(pop)&#xff1a;2.3 封装与测试运行&#xff1a;2.3 - 1 对代码进一步封装2.3 - 2 分配运算任务2.3 - 3 测试与运行 3. 循环阻塞队列3.1 POSIX信号量&#xff1a;3.1 - 1…...

基于springboot+vue的爱心助农网站(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...

“华为杯”研究生数学建模竞赛2019年-【华为杯】D题:汽车行驶工况构建(附获奖论文和MATLAB代码实现)

目录 摘 要: 1. 问题重述 2. 模型假设 2.1 题目对模型给出的假设...

v-cloak的作用和原理

1、作用 v-cloak 指令常用在插值表达式的标签中&#xff0c;用于解决当网络加载很慢或者频繁渲染页面时&#xff0c;页面显示出源代码的情况。 所以为了提高用户的体验性&#xff0c;使用指令 v-cloak&#xff0c;搭配着 CSS 一起使用&#xff0c;在加载时隐藏挂载内容&#x…...

pip pip3安装库时都指向python2的库

当在python3的环境下使用pip3安装库时&#xff0c;发现居然都指向了python2的库 pip -V pip3 -V安装命令更改为&#xff1a; python3 -m pip install <package>...

和逸云 RK3229 如何进入maskrom强刷模式

图中红圈两个点短接以后插usb&#xff0c;就可以进入maskrom模式强刷...

防静电离子风扇的应用及优点

防静电静电离子风扇是一种用于消除静电的设备&#xff0c;它可以通过离子化原理将静电荷离子化&#xff0c;从而达到静电的效果。防静电静电离子风扇通常采用离子风扇的形式&#xff0c;通过离子化原理将静电荷离子化&#xff0c;从而消除静电。 防静电静电离子风扇的工作原理…...

git中无法使用方向键的问题

windows下使用git命令行执行react脚本安装&#xff0c;发现无法使用上下键来去选中选项。最后只能换成cmd命令执行&#xff0c;发现可以上下移动以选中需要的选项。 bash命令行&#xff1a;移动光标无法移动选项 cmd命令行...

负载均衡中间件---Nginx

一.nginx的好处 学习 Nginx 对于一个全栈开发者来说是非常有价值的&#xff0c;下面是一些学习 Nginx 的原因和好处&#xff1a; 反向代理和负载均衡&#xff1a;Nginx 是一个高性能的反向代理服务器&#xff0c;可以用于将客户端请求转发给多个后端服务器&#xff0c;实现负…...

Linux硬链接、软链接

硬链接是一个目录条目(在基于目录的文件系统中)&#xff0c;它将一个名称与一个文件关联起来。因此&#xff0c;每个文件必须至少有一个硬链接。为文件创建额外的硬链接可以使该文件的内容可以通过额外的路径访问(即通过不同的名称或在不同的目录中)这会导致别名效应(alias eff…...

React面试题总结(一)

1、redux本来是同步的&#xff0c;为什么它能执行异步代码&#xff1f;实现原理是什么&#xff1f;中间件的实现原理是什么&#xff1f; 1、Redux-thunk这个中间件支持异步操作 2、执行异步的操作首先需要下载一个thunk&#xff0c;通过thunk来进行异步的一个操作&#xff0c;支…...

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

适配器模式: 继承原对象,持有目标对象; 文章目录 适配器模式: 继承原对象,持有目标对象;前言一、适配器模式的作用二、如何适配器模式直接上代码 总结 前言 适配器模式一般使用场景是: 将一个类(接口)转换成客户希望的另外一个类(接口)。其中适配器充当一个假的原类的作用; 一…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

二维FDTD算法仿真

二维FDTD算法仿真&#xff0c;并带完全匹配层&#xff0c;输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...

flow_controllers

关键点&#xff1a; 流控制器类型&#xff1a; 同步&#xff08;Sync&#xff09;&#xff1a;发布操作会阻塞&#xff0c;直到数据被确认发送。异步&#xff08;Async&#xff09;&#xff1a;发布操作非阻塞&#xff0c;数据发送由后台线程处理。纯同步&#xff08;PureSync…...