一、定义

在设定环境中,定义一种规则或者语法,通过解释器来解释规则或者语法的含义.

二、实例:将  二十一    —>    21

2.1 设定我们的环境 Context

 public class Context{public string Input { get; set; }public int Output { get; set; }}

2.2 根据语法来解释

抽象解释器:

 public abstract class Interpreter{public string FlagStr { get; set; }public int Num { get; set; }public abstract int Interpret(Context context);}

具体解释:

二=2

  public class Two : Interpreter{public Two(){FlagStr = "二";Num = 2;}public override int Interpret(Context context){return Num;}}

一=1

 public class One : Interpreter{public One(){FlagStr = "一";Num = 1;}public override int Interpret(Context context){return Num;}}

十=*10

 public class Tenfold : Interpreter{public Tenfold(){FlagStr = "十";Num = 10;}public override int Interpret(Context context){return context.Output*Num;}}

再封装一下:

 public class InterpretPrivoder{public int FormatStr(Context context){foreach (char c in context.Input){switch (c){case '一': context.Output += new One().Interpret(context); break;case '二': context.Output += new Two().Interpret(context); break;case '十': context.Output = new Tenfold().Interpret(context); break;}}return context.Output;}}

其中,未结束符为二和一,结束符为十

客户端:

 //------------------------解释器模式-----------------------Interpreter.Context interpretContext = new Interpreter.Context();interpretContext.Input = "二十一";Interpreter.InterpretPrivoder interpreter = new Interpreter.InterpretPrivoder();interpreter.FormatStr(interpretContext);Console.WriteLine(interpretContext.Output);Console.ReadKey();

结果:

三、总结

解释器模式,实在一种模式经常出现,并不断变化。我们可以使用解释器。

缺点就是容易子类膨胀

转载于:https://www.cnblogs.com/sunchong/p/5133911.html

设计模式(十五):解释器模式相关推荐

  1. 设计模式之外观模式php,php设计模式(十五)外观模式

    外观模式又叫门面模式: 现在都是模块化开发了: 开发中很多时候都是在使用各种扩展包: 或者在外观模式中我们叫做子系统: 外观模式的作用就是减少子系统之间的耦合: 降低子系统的使用难度: 我们举个栗子: ...

  2. 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

    设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述 在软件开发中也经常遇到类似的情况,实现某一个功能有多种算法或者策略,我们能够依据环境或者条件的不同选择不同的算法或者策略来完毕 ...

  3. 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)

    设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型) 1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用 ...

  4. 设计模式之15 - 解释器模式Interpreter

    1. 解释器模式(Interpreter Pattern)的定义 (1)定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. ①文法:即语法规则.在解 ...

  5. Net设计模式实例之解释器模式(Interpreter Pattern)

    一.解释器模式简介(Brief Introduction) 解释器模式(Interpreter Pattern),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言 ...

  6. Java进阶篇设计模式之九----- 解释器模式和迭代器模式

    前言 在上一篇中我们学习了行为型模式的责任链模式(Chain of Responsibility Pattern)和命令模式(Command Pattern).本篇则来学习下行为型模式的两个模式, 解 ...

  7. fcq java_Java设计模式百例 - 解释器模式

    解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式.这种模式实现了一个表达式接口,该接口解释一个特定的上下文. 解释器模式在我们开发过程中并不常用 ...

  8. Java设计模式学习记录-解释器模式

    前言 这次介绍另一个行为模式,解释器模式,都说解释器模式用的少,其实只是我们在日常的开发中用的少,但是一些开源框架中还是能见到它的影子,例如:spring的spEL表达式在解析时就用到了解释器模式,以 ...

  9. 从王者荣耀看设计模式(五.组合模式)

    从王者荣耀看设计模式(组合模式) 一.简介 在王者荣耀这款游戏中,我们可以在商店中购买英雄.英雄由法师.射手.打野等职业组合而成,其中各个职业由中国元素的英雄和外国元素的英雄组成,玩家可根据需要挑选并 ...

  10. 设计模式之略见一斑(解释器模式Interpreter)

    解释器模式是一种比较难理解的模式,但如果你对Command(命令模式)和Composite(组合模式)很了解的话,你会发现其实解释器模式就是这两种的组合.为何要使用解释器模式,如何用解释器模式呢,这就 ...

最新文章

  1. Matlab中的图形句柄(转载)
  2. 【趣说】IT人的职场艰难,全藏在气氛组里!
  3. Become a science founder fellowship
  4. 通过SQL即可让监控分析更简单更高效
  5. 东野圭吾梦幻花读后感_《梦幻花》精选读后感
  6. 【java】java JVM如何科学的设置内存参数 虚拟机调优案例
  7. python 折线图中文乱码_python matplotlib linux中文乱码问题
  8. java统计汉字个数_java统计汉字字数的方法示例
  9. 惠普M1005打印机驱动-LaserJet提供下载
  10. c盘瘦身 或者 c盘清理
  11. 未来生活进行时: 畅想未来新兴技术40年——百大趋势性技术汇总(上)
  12. LoadRunner 快速生成手写脚本
  13. 2022新版UI聚合支付系统四方系统源码+修复漏洞完美版
  14. zookeeper-集群-选举机制
  15. 正负数值的正则表达式
  16. html2canvas实现一键截图
  17. dns辅服务器未响应ping,四招教你快速解决DNS服务器未响应
  18. 3559A sample hifb解析
  19. 图片尺寸px怎么转换成厘米?在线图片尺寸换算工具怎么用?
  20. 有一个强大又好看的,赛过Typora,阿里开发的语雀编辑器

热门文章

  1. requests高级用法
  2. HDU 3665 Seaside
  3. Bluetooth LE(低功耗蓝牙) - 第一部分
  4. C++ 类成员引用变量的使用
  5. java能否调用com_java调用com
  6. python我想对你说_python学习第3天-----字典、解构
  7. 查询分析器在哪里_你应该知道的3种Node.js分析器类型
  8. 华为y7可以人脸识别吗_华为手机经常弹出“系统更新”提示,可以不更新吗?看完涨知识了...
  9. 点击显示底框颜色,默认显示第一个。
  10. vue 开发过程中遇到的问题