解释器模式c语言_解释器设计模式_解释器模式java(3)

电脑杂谈  发布时间:2017-02-24 14:35:36  来源:网络整理

{

Value = value;

}

public void Interpret(StringBuilder sb)

{

sb.Append(ChineseToEnglishDict.GetEnglish(Value.ToLower()));

}

}

public static class Translators

{

public static string EnglishToChinsesTranslator(string sentense)

{

StringBuilder sb=new StringBuilder();

List<IExpressions> expressions = new List<IExpressions>();

expressions.Add(new EnglishWordExpression(sentense));

foreach (IExpressions e in expressions)

{

e.Interpret(sb);

}

return sb.ToString();

}

public static string ChinsesToEnglishTranslator(string sentense)

{

StringBuilder sb = new StringBuilder();

List<IExpressions> expressions = new List<IExpressions>();

expressions.Add(new ChineseWordExpression(sentense));

foreach (IExpressions e in expressions)

{

e.Interpret(sb);

}

return sb.ToString();

}

}[/mw_shl_code]

首先实现一个ChineseToEnglishDict 中英文翻译字典类, 里面存放一个字典,存放我们的中英文字典,为了方便,我们也在里面把字典的内容填充好, 其实正确的做法是做两个 中英文的静态表存起来,分别从两个表取。解释器设计模式然后里面还有两个方法 中文转英文和英文转中文, 就是从字典的key取value或者value取key。

接下来是一个IExpressions 虚拟翻译类,里面的Interpret虚拟方法我用了StringBuilder来代替示例代码的string,毕竟我们是要不断改写内容的。

然后 再写两个实体翻译类,一个中转英,一个英转中,就是分别调用中英文翻译字典类的方法而已,最后 一个 静态翻译工具类,里面做的事就是我们在示例代码的实现类似,把重复使用的封装起来,看起来更简洁。好,现在看实现代码

[mw_shl_code=csharp,true] string english1 = "skills";

string chinese1 = Translators.EnglishToChinsesTranslator(english1);

Console.WriteLine(chinese1);

string chinese2 = "好友";

string english2 = Translators.ChinsesToEnglishTranslator(chinese2);

Console.WriteLine(english2);[/mw_shl_code]

这里实现代码是不是比示例更加简便了,传入一个需要翻译的字,然后在接收,输出。一气呵成。我们运行下看看结果

Interpreter 解释器模式的介绍就是以上内容,我们最后再来总结下,解释器模式属于行为模式,Gof是这样定义的:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。

最后提供示例的工程文件,希望能和大家一起学习进步。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-34239-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...