当前位置:萝卜系统 > 硬件软件教程 > 详细页面

18 C#设计模式

18 C#设计模式

更新时间:2023-06-21 文章作者:未知 信息来源:网络 阅读次数:

根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。

解释器模式的优点_解释器模式的优点_解释器模式 类模式

设计模式解释器模式刘?(Sunny)weiliu_china@126.com概述?解释器模式概述?语法规则和抽象语法树?解释器模式的结构和实现?解释器模式的应用示例?口译员模式您是否可以使用新的编程语言?口译员模式概述?加/减解释器加/减解释器输入表达式: 1 + 2 + 3–4 + 1计算结果显示: 3解释器模式概述?分析? C#语言不能直接解释“ 1 + 2 + 3 – 4 + 1”字符串之类的内容吗?定义一组语法规则来实现对这些语句的解释,即设计一种自定义语言?基于现有的编程语言?面向编程语言?解释器模式解释器模式概述?解释器模式定义解释器模式: 给定一种语言,定义其语法表示形式,并定义一个解释器,使用该表示形式来解释该语言中的句子. 定义其语法的表示形式,以及使用该表示形式来解释语言中句子的解释器. ?行为类似模式解释器模式的概述?解释器模式的定义?解释器模式的定义引用的“语言”是使用规定格式和语法的代码吗?这是相对少见但相对困难的设计模式吗?赚钱,描述如何使用面向对象的语言来构成一个简单的语言解释器?是否可以加深对面向对象思维的理解,并了解编程语言的中文语法规则,语法规则和抽象语法树的解释过程?语法规则? 1 + 2 + 3–4 + 1表达式:: =值|操作操作:: =表达式'+'表达式| expression'-'expression value :: =整数//整数值? “ :: =”表示“定义为”? “ |”意思是“或”? “ {”和“}”表示“组合”?“ *”表示“出现0次或多次”语法规则和抽象语法树?抽象语法树非终结符表达?抽象语法树(Abstract Syntax Tree,AST)操作+运算值4value 1?描述如何形成复杂的运算语句,通过对抽象语法+树的分析,可以识别语言+值3value 1value 2的终止符类和非终止符类以及终止符的实现表达式解释器模式Context?解释解释器模式的结构ClientAbstractExpression +解释(上下文ctx)TerminalExpression +解释(上下文ctx)NonterminalExpression +解释(上下文ctx)解释器模式的结构和实现解释器模式的结构?解释器模式包含以下4个角色: ?AbstractExpression(抽象表达式)?TerminalExpression(终端表达式)?非terminalExpression(非终端表达式)?上下文(环境类)解释器模式的结构和实现?解释器模式的实现?典型的抽象表达类代码: 抽象类AbstractExpression {public abstract void Interpret(Context ctx);}解释器模式的结构和实现?执行解释器模式?典型的终端表达式类代码: 类TerminalExpression: AbstractExpression {公共重写void Interpret(Context ctx){//终端表达式的解释器操作}}解释器模式的结构和实现?解释器模式类的实现NonterminalExpression: AbstractExpression {?典型的非终端表达式类代码为: private AbstractExpression left;私人AbstractExpression权利;公共NonterminalExpression(左边的AbstractExpression,右边的AbstractExpression){this.left = left; this.right = right;}公共重写void Interpret(Context ctx){//以递归方式调用每个组件的interpret()方法//在递归调用期间指定组件的连接方法,即非函数}}解释器模式的结构和实现?解释器模式的实现?环境类上下文: 用于存储一些全局信息,通常包含Hashtable或List类型的集合对象(也可以直接由Hashtable等集合类用作环境类),存储一系列公共信息,例如变量名之间的映射和值(键/值)等用于执行特定解释操作时从中获取相关信息?您可以在环境类中添加一些表达式解释器常用功能以减少解释器的责任?当系统不需要提供全局公共信息时,您可以忽略环境类,并根据实际情况决定是否需要环境类解释器模式的结构和实现?使用System.Collections实现解释器模式;类上下文?典型的环境类代码: {private Hashtable ht = new Hashtable(); //设置集合对象中的值public void Assign(字符串键,字符串值){ht.Add(key,value);} //获取存储在集合对象中的公共字符串Lookup(string key)的值{返回(string)ht [key];}}解释器模式的应用示例?该示例表明,一家软件公司要开发一个机器人控制程序,其中包含一些简单的英语控制指令,每个指令对应一个表达式(expression),该表达式可以是简单表达式或复合表达式.

解释器模式 类模式_解释器模式的优点_解释器模式的优点

每个简单表达式都由三个部分组成: 运动方向,动作和距离. 移动方向包括上,下和左. ), 是的是的);移动方式包括移动和运行. 移动距离是一个正整数. 这两个表达式可以相互连接并形成一个复合表达式. 用户可以通过操作图形设置界面来创建机器人控制命令. 收到命令后,机器人将根据命令设置移动. 例如,输入控制命令“ up move 5”以“ move up 5 units”;输入控制命令“向下运行10,向左移动20”将“快速向下移动10个单元,然后向左移动20个单元”. 现在,使用解释器模式设计程序并模拟实现. 解释器模式的应用示例?示例分析和类图?语法规则表达式:: =方向作用距离|合成//表达式合成:: =表达式'and'表达式//合成表达式方向:: ='up'| 'down'|'left'|'right'//运动方向动作:: ='move'|'run'//运动距离:: =整数//运动距离?终止符表达方向,动作和距离对应于DirectionNode类解释器模式的优点,ActionNode类和DistanceNode类?非终端表达式和与SentenceNode和AndNode类解释器模式对应的表达式的应用示例?实例分析和类图?抽象语法树?向下运行10并向左移动20AndNode和SentenceNodeDirectionNode向下ActionNode运行DistanceNode 10方向节点leftSentenceNodeActionNode向DistanceNode 20移动解释器模式的应用示例?示例分析和类图InstructionHandler-node: AbstractNode + Handle(字符串指令): void + Output(): void ... AbstractNode {抽象} + Interpret(): 字符串... AndNode-left: AbstractNode-right: AbstractNode + AndNode(左为AbstractNode,右为AbstractNode)+解释(): 字符串... DirectionNode-方向: 字符串+ DirectionNode(字符串方向)+解释(): 字符串... ActionNode-action: 字符串+ ActionNode(字符串操作)+解释(): 字符串... DistanceNode距离: 字符串+ DistanceNode(字符串距离)+解释(): 字符串... SentenceNode方向: AbstractNode动作: AbstractNode距离: AbstractNode + SentenceNode(AbstractNode方向,AbstractNode动作,AbstractNode距离)+解释(): 字符串...机器人控制程序解释器模式的应用示例?示例代码? (1)AbstractNode: 抽象节点类,充当抽象表达角色? (2)AndNode: 以及节点类,充当非终端表达式? (3)SentenceNode: 简单句子节点类,充当非终端表达式吗? (4)DirectionNode: 方向节点类,担当终端Expression的角色? (5)ActionNode: 动作节点类,充当终??止符吗? (6)DistanceNode: 距离节点类,充当终??止符吗? (7)InstructionHandler: 指令处理类,工具类? (8)程序: 客户端测试演示...参考代码(DesignPattern \ InterpreterSample)解释器模式的应用示例?结果和分析下移10和左移20快速下移10,然后左移20向上移5,下移10和左移5上移5,然后快速下移10然后左移5解释器模式的优缺点和适用范围环境?模式优势?易于更改和扩展语法吗?您可以轻松实现一种简单的语言吗?实施语法更容易(使用自动生成工具)?添加新的解释表达式更加方便. 解释器模式和适用环境的优缺点?模式的缺点?难以维护复杂的语法?解释器模式的优缺点和适用环境解释器模式的优点,执行效率低?模式适用环境?可以用需要解释和执行为抽象语法树的语言来表达句子吗?一些重复的问题可以用简单的语言表达问题吗?一种语言的语法相对简单吗?执行效率不是关键问题END


本文来自本站,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-264842-1.html



温馨提示:喜欢本站的话,请收藏一下本站!

本类教程下载

系统下载排行

网站地图xml | 网站地图html