设计模式(二十三)——解释器模式
来源:互联网 发布:网络交易的特点 编辑:程序博客网 时间:2024/05/16 10:16
解释器模式(Interpreter)
解释器模式,给定一个语言。定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
代码
代码如下:
表达式类
using System;namespace Interpreter{//表达式类(AbstractExpression)public abstract class Expression{//解释器public void Interpret(PlayContext context){if (context.playText.Length == 0) {return;} else {string playKey = context.playText.Substring (0, 1);context.playText = context.playText.Substring (2);double playValue = Convert.ToDouble (context.playText.Substring (0, context.playText.IndexOf (" ")));context.playText = context.playText.Substring (context.playText.IndexOf (" ") + 1);Excute (playKey, playValue);}}//执行public abstract void Excute(string key,double value);}}
音符类
using System;namespace Interpreter{//音符类(TerminalExpression)public class Note:Expression{public override void Excute (string key, double value){string note = "";switch (key) {case "C":note = "1";break;case "D":note = "2";break;case "E":note = "3";break;case "F":note = "4";break;case "G":note = "5";break;case "A":note = "6";break;case "B":note = "7";break;}Console.Write ("{0} ", note);}}}
音符类
using System;namespace Interpreter{//音符类(TerminalExpression)public class Scale:Expression{string scale="";public override void Excute (string key, double value){switch (Convert.ToInt32 (value)) {case 1:scale = "低音";break;case 2:scale = "中音";break;case 3:scale = "高音";break;}Console.Write ("{0} ", scale);}}}
演奏内容
using System;namespace Interpreter{//演奏内容(Context)public class PlayContext{//演奏文本public string playText;}}2.客户端代码如下:
客户端
using System;namespace Interpreter{class MainClass{public static void Main (string[] args){PlayContext context = new PlayContext ();//音乐Console.WriteLine("上海滩:");context.playText = "O 2 E 0.5 G 0.5 A 3 E 0.5 G 0.5 D 3 E 0.5 G 0.5 A 0.5 O 3 C 1 O 2 A 0.5 G 1 C 0.5 E 0.5 D 3 ";Expression expression = null;try{while(context.playText.Length>0){string str=context.playText.Substring(0,1);switch(str){case "O":expression=new Scale();break;case "C":case "D":case "E":case "F":case "G":case "A":case "B":case "P":expression=new Note();break;default:expression=new Note();break;}expression.Interpret(context);}}catch(Exception ex){Console.WriteLine (ex.Message);}}}}3.运行结果
UML图
源码下载地址:https://gitee.com/ZhaoYongshuang/DesignPattern.git
阅读全文
1 0
- 设计模式(二十三)——解释器模式
- Java面向对象设计模式(二十三)——解释器模式(Interpreter)
- 设计模式笔记(二十三) —— 解释器模式
- 设计模式实现(二十三)--- 解释器模式(interpreter)
- Java设计模式(二十三)----解释器模式
- JAVA--解释器模式(Interpreter)--设计模式二十三
- 二十三、解释器模式——设计模式学习笔记
- 设计模式之二十三:解释器模式
- Java设计模式《二十三》解释器模式
- 二十三种设计模式之解释器模式
- (二十三)解释器模式
- 设计模式——解释器模式(二)
- 浅谈Java设计模式(二十三)解释器模式(Interpreter)
- Java开发中的23种设计模式之二十三:解释器模式(Interpreter)
- 设计模式—访问者模式(二十三)
- 面向对象的设计模式(十三),解释器模式
- 二十三种设计模式之行为型模式之解释器模式
- 设计模式--(二十三)
- win server 2008 创建用户时密码不满足策略要求
- 从窗口到视口的映射
- Android Gradle 使用教程
- RESTful API 设计指南
- gradle学习
- 设计模式(二十三)——解释器模式
- Servlet笔记(四)过滤器Filter
- python pip下载速度慢的解决方法
- D3.js中Stacked-to-Grouped Bars详解
- docker 容器启动时间同步
- Signaling Semaphores and Priority Inheritance
- 18、android开发基础之SharePreference的使用
- Servlet笔记(五)监听器Listener
- Android导入第三方静态库.a编译成动态库.so