设计模式_解释器模式

解释器模式 

案例

角色

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();}}

运行结果

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

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

相关文章

Redis 面试题——缓存穿透、缓存击穿和缓存雪崩

目录 1.缓存穿透2.缓存击穿3.缓存雪崩4.总结 参考文章&#xff1a; 缓存实战&#xff08;1&#xff09;缓存雪崩、缓存击穿和缓存穿透入门简介及解决方案 1.缓存穿透 &#xff08;1&#xff09;问题描述&#xff1a;缓存穿透是指在高并发场景下&#xff0c;大量的请求访问一个…

23种设计模式汇总详解

设计原则 中文名称英文名称含义解释单一职责原则Single Responsibility Principle(SRP)任何一个软件模块都应该只对某一类行为者负责一个类只干一件事&#xff0c;实现类要单一开闭原则Open-Close Principle(OCP)软件实体&#xff08;类、模块、函数等&#xff09;应该是可以扩…

使用scss简化媒体查询

在进行媒体查询的编写的时候&#xff0c;我们可以利用scss与与编译器&#xff0c;通过include混入的方式对代码进行简化&#xff0c;从而大大提高了代码的可维护性&#xff0c;也减少了代码的编写量&#xff0c;废话不多说&#xff0c;直接上代码&#xff1a; // 断点列表 相当…

ChatGpt介绍和国产ChatGpt对比

1.ChatGPT是美国OpenAI研发的聊天机器人程序&#xff0c;2022年11月30日发布。ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过理解和学习人类的语言来进行对话。 2.ChatGPT是一种基于自然语言处理的聊天机器人程序。它使用深度学习技术&#xff0c;通过对…

JLBANK-IRS统计报表相关的两个存储过程

1、 债项评级统计报表 CREATE OR REPLACE PROCEDURE SP_DEBT_RATING_RESULT_QUERY( P_RATING_TIME VARCHAR2, P_ORGSEQ VARCHAR2, P_SMALL_CORP_LOAN_CD VARCHAR2, P_CUR OUT IRS_REF.T_CURSOR) AS V_ORGSEQ VARCHAR2(12) : …

【Linux】常用工具(下)

Linux常用工具 一、Linux 项目自动化构建工具 - make/Makefile1. 依赖关系和依赖方法2. 伪目标3. make/Makefile 具有依赖性的推导能力&#xff08;语法扩展&#xff09;4. 编写一个进度条代码&#xff08;1&#xff09;缓冲区&#xff08;2&#xff09;\n 和 \r&#xff08;3&…

《C和指针》笔记29:数组名和指针

看下面的代码 int b[10];b[4]的类型是整型&#xff0c;但b的类型又是什么&#xff1f;它所表示的又是什么&#xff1f;一个合乎逻辑的答案是它表示整个数组&#xff0c;但事实并非如此。在C中&#xff0c;在几乎所有使用数组名的表达式中&#xff0c;数组名的值是一个指针常量…

Flask+pyecharts+SQLAlchemy,统计图的数据存放在mysql中,综合版

ISEE小语 有人问:“世上最廉价的东西是什么?” 在网上看到这样一个回答说: “大概就是付出吧,一贫如洗的真心、一事无成的温柔、一厢情愿的等待。” 回顾上篇 此篇是在【Flask+pyecharts结合,html统计图呈现在前端页面】和【Flask+pyecharts结合,优化前端加导航栏显示】的…

Vue实现大文件分片上传、断点续传

前言 实现大文件分片上传的断点续传以及上传进度条是一个在前端开发中常见且具有挑战性的问题。本篇博客将介绍如何使用Vue框架来实现这个功能&#xff0c;并给出代码示例。 概述 大文件分片上传指的是将一个大文件切割成多个小文件&#xff08;或称为分片&#xff09;&…

软件测试-BUG

软件测试-BUG 1.如何合理创建一个BUG 创建bug的要素&#xff1a; 软件的版本发现问题的环境发现问题的步骤预期结果实际结果 Bug报告&#xff1a; 软件版本&#xff1a;Google Chrome浏览器&#xff08;具体版本号&#xff09; 发现问题环境&#xff1a;在Windows 10操作系统…

ASO优化之如何给应用选择竞争对手

在选择竞争对手过程中&#xff0c;最常见的错误之一是没有考虑到自己的应用与同一行业的其他应用相比的范围。例如如果我们刚刚发布了一个应用程序&#xff0c;那么最好的办法就是专注于研究和自己同一级别的应用。 1、研究主要关键词。 首先选择5到10个可以定义产品类型的主要…

什么是ELK

什么是ELK ELK 并不是一个技术框架的名称&#xff0c;它其实是一个三位一体的技术名词&#xff0c;ELK 的每个字母都来自一个技术组件&#xff0c;分别是 Elasticsearch&#xff08;简称 ES&#xff09;、Logstash 和 Kibana。 三个技术组件是独立的&#xff0c;后两个被elast…

如何给API签名

前言 有时候为了保护API&#xff0c;需要用到 API 签名&#xff0c;使用 API 签名的好处&#xff1a; 让API只能被特定的人访问防止别人抓包拿到请求参数&#xff0c;通过篡改参数发起新的请求 客户端过程 给API调用者分配一个app_id和app_secret&#xff0c;app_secret调用…

【基于Thread多线程+随机数(Random)+java版本JDBC手动提交事务+EasyExcel读取excel文件,向数据库生成百万级别模拟数据】

基于Thread多线程随机数&#xff08;Random&#xff09;java版本JDBC手动提交事务EasyExcel读取excel文件&#xff0c;向数据库生成百万级别模拟数据 基于Thread多线程随机数&#xff08;Random&#xff09;java版本JDBC手动提交事务EasyExcel读取excel文件&#xff0c;向数据库…

《动手学深度学习》(pytorch版+mxnet版)2023最新

我又来推书了&#xff0c;这次分享的这本书可是重量级&#xff0c;目前已经被55个国家300所大学用于教学&#xff0c;同时受到了学术界与工业界的强烈推荐。 这本书就是李沐、阿斯顿张、立顿、斯莫拉四位大佬联合编写的《动手学深度学习》。本书面向中文读者&#xff0c;能运行…

【uniapp+vue3 】页面加载时根据不同角色设置导航栏标题

uniapp 页面加载时根据不同角色设置导航栏标题 其实很好实现&#xff0c;第一次开发uniapp项目&#xff0c;所以什么都不懂&#xff0c;绕了一点点的弯路 在对应页面的onLoad中获取到跳转过来传的参数中的判断角色字段&#xff0c;我这里传的是getRole uni.setNavigationBarT…

2024携程校招面试真题汇总及其解答(二)

6.画一下浮点数的结构 浮点数的结构主要由以下几个部分组成: 符号位:用于表示浮点数的正负,0 表示正,1 表示负。指数位:用于表示浮点数的大小,0 表示 1,1 表示 2,以此类推。尾数位:用于表示浮点数的具体值,尾数位通常使用科学计数法来表示。以下是浮点数的结构图: …

基于SSM的旅游网站系统

基于SSM的旅游网站系统【附源码文档】、前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;管理员、用户 管理员&#xff1a;用户管理、景点…

6. N 字形变换

https://leetcode.cn/problems/zigzag-conversion/description/ 思路 找规律&#xff1a; 首尾两行的下标是一个以i为第一个元素&#xff0c;2n-2为公差的等差数列中间元素的奇数元素是一个以i为第一个元素&#xff0c;2n-2为公差的等差数列 偶数元素是一个以2n-i-2为第一个…

避免分库分表,绿普惠的分布式数据库选型与实践

作者&#xff1a;翻墨&#xff0c;绿普惠科技&#xff08;北京&#xff09;有限公司架构师 一项数据显示&#xff0c;今天大气中的二氧化碳水平比过去 65 万年高了 27%。主要原因来自于工业化需求下的煤炭燃烧、汽车尾气。随着人类活动造成的温室效应加剧&#xff0c;环保越来越…