当前位置: 首页 > 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:适配器模式

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

MQTT通信中的QoS级别详解:SpringBoot如何选择最适合的传输质量?

MQTT通信中的QoS级别详解&#xff1a;SpringBoot如何选择最适合的传输质量&#xff1f; 在物联网和分布式系统架构中&#xff0c;消息传输的可靠性往往直接关系到业务逻辑的正确性。MQTT协议作为轻量级发布/订阅模式的通信标准&#xff0c;其QoS&#xff08;服务质量&#xff0…...

从硬件迷宫到macOS殿堂:OpCore Simplify如何重塑黑苹果配置体验

从硬件迷宫到macOS殿堂&#xff1a;OpCore Simplify如何重塑黑苹果配置体验 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 对于许多技术爱好者来说&a…...

零基础入门esp32开发:用快马平台生成第一个led控制程序详解

最近在学ESP32开发&#xff0c;发现对于新手来说&#xff0c;从零开始写代码还是挺有挑战的。不过我发现了一个超好用的工具——InsCode(快马)平台&#xff0c;它可以根据你的需求直接生成可运行的代码&#xff0c;特别适合像我这样的初学者。 项目需求分析 我想实现一个简单的…...

用Python的powerlaw库分析游戏付费数据:从‘鲸鱼玩家’到长尾分布,手把手教你做实战分析

用Python的powerlaw库解析游戏付费行为&#xff1a;从数据清洗到商业决策全流程 游戏行业的数据分析师们常常面临一个经典问题&#xff1a;如何理解玩家付费行为背后的数学规律&#xff1f;当我们打开一份付费数据报表&#xff0c;往往会发现少数"鲸鱼玩家"贡献了绝…...

Repomix Git日志集成:掌握commit历史分析的终极指南

Repomix Git日志集成&#xff1a;掌握commit历史分析的终极指南 【免费下载链接】repomix &#x1f4e6; Repomix (formerly Repopack) is a powerful tool that packs your entire repository into a single, AI-friendly file. Perfect for when you need to feed your codeb…...

用腾讯云轻量锐驰和对象存储,手把手教你30分钟搞定私人不限速网盘(附SSL证书配置)

零基础30分钟搭建高性能私人网盘&#xff1a;腾讯云轻量锐驰对象存储实战指南 你是否也受够了公有网盘动辄几百KB的下载速度&#xff1f;每次分享文件给朋友&#xff0c;对方总要忍受龟速下载的煎熬。更别提那些突然消失的文件和频繁弹出的会员广告——是时候拥有一个完全自主掌…...

OpenClaw备份方案:GLM-4.7-Flash自动化任务容灾保护

OpenClaw备份方案&#xff1a;GLM-4.7-Flash自动化任务容灾保护 1. 为什么需要备份OpenClaw自动化任务 去年冬天&#xff0c;我的硬盘突然崩溃&#xff0c;导致辛苦配置的OpenClaw自动化任务全部丢失。那一刻我才意识到&#xff0c;当AI助手成为日常工作的"数字员工&quo…...

Zotero文献管理终极指南:从混乱到高效的研究工作流

Zotero文献管理终极指南&#xff1a;从混乱到高效的研究工作流 【免费下载链接】zotero Zotero is a free, easy-to-use tool to help you collect, organize, annotate, cite, and share your research sources. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero Z…...

不止于搭建:用DVWA靶场在Kali上复现SQL注入与文件上传漏洞实战

不止于搭建&#xff1a;用DVWA靶场在Kali上复现SQL注入与文件上传漏洞实战 当你第一次在Kali Linux上成功运行DVWA靶场时&#xff0c;那种成就感就像解锁了新世界的大门。但真正的乐趣才刚刚开始——这个看似简单的靶场&#xff0c;其实是网络安全爱好者最好的实战训练场。本文…...

HunyuanVideo-Foley音效生成:支持中文prompt理解的城市环境音效精准生成

HunyuanVideo-Foley音效生成&#xff1a;支持中文prompt理解的城市环境音效精准生成 1. 产品概述 HunyuanVideo-Foley是一款专为视频内容创作设计的AI音效生成工具&#xff0c;能够根据中文文本描述精准生成各类环境音效。本镜像为RTX 4090D 24GB显存显卡深度优化的私有部署版…...