
大家好,我是云图。今天我们来介绍下 Interpreter 解释器模式。Interpreter 解释器模式我们能用到的地方有很多,比如我们经常用的金额 用数字转中文字,
10000转成中文就是一万。 顾名思义,这个设计模式就是一个解释器,通过你输入的一个类型转成另外一个类型出来,在我们的sql查询里面更加有大量的运用。
我们先来看懂下基础代码,然后最后实现一个 我们游戏中的中英文切换功能。
[mw_shl_code=csharp,true]
class Context
{
private string input;
public string Input
{
get { return input; }
set { input = value; }
}
private string output;
public string Output
{
get { return output; }
set { output = value; }
}
}
abstract class AbstractExpression
{
public abstract void Interpret(Context context);
}
class TerminalExpression : AbstractExpression
{
public override void Interpret(Context context)
{
Console.WriteLine("终端解释器");
}
}
class NonterminalExpression : AbstractExpression
{
public override void Interpret(Context context)
{
Console.WriteLine("非终端解释器");
}
}[/mw_shl_code]
首先我们定义一个Context的内容类,装有input 和output两个内容。然后是一个虚拟翻译类AbstractExpression。 里面有一个虚拟方法,可以传入一个Context。
最后是两个实体翻译类TerminalExpression类和NonterminalExpression类,都是实际操作的翻译类,这时各自都输出一句话示意。再来看实现
[mw_shl_code=csharp,true] Context context = new Context();
List<AbstractExpression> lists = new List<AbstractExpression>();
lists.Add(new TerminalExpression());
lists.Add(new NonterminalExpression());
lists.Add(new TerminalExpression());
lists.Add(new TerminalExpression());
foreach (AbstractExpression exp in lists)
{
exp.Interpret(context);
}[/mw_shl_code]
新new一个contex内容类, 一个虚拟翻译AbstractExpression表单, 然后添加实体翻译类,最后循环调用Interpret输出。解释器设计模式

基本的逻辑框架就是这样,是不是非常简单呢,好 现在我们再来升华下内容,做一个我们玩游戏中经常会有一个 中英文切换功能。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-34239-1.html
不用大陆动手
海里近距离对准他高价值目标