当前位置: 首页 > news >正文

网站建设协议/中国新闻网最新消息

网站建设协议,中国新闻网最新消息,商丘网商丘网络第一媒体,wordpress文件存放不同目录下一、定义 给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。 主要解决:对于一些固定文法构建一个解释句子的解释器。 何时使用:如果一种特定类型的问题发生的频率足够高&a…

一、定义

给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。

主要解决:对于一些固定文法构建一个解释句子的解释器。

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

如何解决:构件语法树,定义终结符与非终结符。

二、结构

 

  组成:   

  AbstractExpression(抽象表达式):定义解释器的接口,约定解释器的解释操作。

  TerminalExpression(终结符表达式):用来实现语法规则中和终结符相关的操作,不再包含其它的解释器,如果用组合模式来构建抽象语法树的话,就相当于组合模式中的叶子对象,可以有多种终结符解释器。

  NonterminalExpression(非终结符表达式):用来实现语法规则中非终结符相关的操作,通常一个解释器对应一个语法规则,可以包含其它的解释器,如果用组合模式来构建抽象语法树的话,就相当于组合模式中的组合对象,可以有多种非终结符解释器。

  Context(上下文):它包含了解释器之外一些其他的全局信息;通常包含各个解释器需要的数据,或是公共的功能。

  Client(客户端):指的是使用解释器的客户端,通常在这里去把按照语言的语法做的表达式,转换成为使用解释器对象描述的抽象语法树,然后调用解释操作。

 

三、适用场景

 1、可以将一个需要解释执行的语言中的句子表示为一个抽象语法树。

2、一些重复出现的问题可以用一种简单的语言来进行表达。

3、一个简单语法需要解释的场景。

 

四、优缺点

优点: 1、可扩展性比较好,灵活。 2、增加了新的解释表达式的方式。 3、易于实现简单文法。

缺点: 1、可利用场景比较少。 2、对于复杂的文法比较难维护。 3、解释器模式会引起类膨胀。 4、解释器模式采用递归调用方法。

五、实现

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesignPatterns.Interpreter
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(ReplyClient.ApplyContent("Y0001"));
Console.WriteLine(ReplyClient.ApplyContent("y0002"));
Console.WriteLine(ReplyClient.ApplyContent("N0003"));
Console.WriteLine(ReplyClient.ApplyContent("n0004"));
}
}
/// <summary>
/// 回复内容
/// </summary>
public class ReplyContent
{
private string _ReplyText;
public string ReplyText
{
get { return _ReplyText; }
set { _ReplyText = value; }
}
}
public abstract class InterPreter
{
public string ConvertContent(ReplyContent content)
{
if (content.ReplyText.Length == 0)
return "请按规则回复审批短信.";
return Excute(content.ReplyText);
}
public abstract string Excute(string key);
}
public class Approve : InterPreter
{
public override string Excute(string key)
{
if (key == "Y" || key == "y")
{
return "同意";
}
else if (key == "N" || key == "n")
{
return "拒绝";
}
else
{
return "回复内容有误,请重新回复.";
}
}
}
public class DocumentNum : InterPreter
{
public Dictionary<string, string> OddNum
{
get
{
Dictionary<string, string> OddID = new Dictionary<string, string>();
OddID.Add("0001", "123890890892345");
OddID.Add("0002", "123456717012345");
OddID.Add("0003", "123456669012345");
OddID.Add("0004", "123423444012345");
OddID.Add("0005", "123467845345345");
OddID.Add("0006", "123231234564345");
OddID.Add("0007", "128797897867745");
return OddID;
}
}
public override string Excute(string key)
{
string value = null;
if (OddNum.TryGetValue(key, out value))
{
return value;
}
else
{
return "没找到对应的单号.";
}
}
}
public class ReplyClient
{
public static string ApplyContent(string replayValue)
{
string result = string.Empty;
string approvevalue = replayValue.Substring(0, 1);
string oddIDvalue = replayValue.Substring(1, 4);
ReplyContent content = new ReplyContent();
content.ReplyText = approvevalue;
InterPreter expression = new Approve();
result = string.Format("你{0}", expression.ConvertContent(content));
expression = new DocumentNum();
content.ReplyText = oddIDvalue;
result += string.Format("单号是{0}的申请.\n", expression.ConvertContent(content));
return result;
}
}
}

 

 参考

http://www.runoob.com/design-pattern/interpreter-pattern.html

http://www.cnblogs.com/JsonShare/p/7367535.html

http://www.cnblogs.com/springyangwc/archive/2011/05/05/2037146.html

 


欢迎阅读本系列文章:Head First设计模式之目录 

 

http://www.jmfq.cn/news/5218597.html

相关文章:

  • 怎么做网站的动效/今日新闻联播
  • 网站建设软件开发公司/大一网页设计作业成品免费
  • 高唐网站建设/公众号免费推广平台
  • 深圳网站建设信科便宜/优化内容
  • 萍乡网站设计公司/品牌推广策划营销策划
  • 做二手手机的网站有哪些/免费注册推广网站
  • 网站未备案什么意思/网站排名优化公司哪家好
  • 网站建设分金手指专业三十/海南网站制作
  • 广东中山市做网站/360提交入口网址
  • 流量主小程序搭建/整站seo排名
  • 免费网站空间怎么办/新闻头条今日新闻下载
  • 企业网站做百度小程序/排名函数
  • 杭州做兼职网站建设/市场营销七大策略
  • 做响应式网站的物流/seo是什么字
  • 红花岗区住房和城乡建设局网站/进一步优化落实
  • 基于互联网怎样做网站推广/省好多会员app
  • html5网站开发框架/友情链接联盟
  • 莎娜琳官方网站做水/备案域名购买
  • 网站建设公司有/百度售后服务电话
  • 网站建设 英文/郑州seo技术博客
  • 教研网站建设方案/湖北seo诊断
  • 做国外搞笑网站/用模板快速建站
  • 小红书关键词优化/宁波seo外包服务
  • 在linux上做网站搭建/研究生培训机构排名
  • 客户做网站要退款/会员制营销方案
  • 北京软件技术有限公司/衡水网站优化推广
  • 做日本暖暖小视频网站/超级优化
  • 做网站推广员需要/seo网络贸易网站推广
  • 风水网站建设的策划书/黑帽seo联系方式
  • 罗岗网站建设公司/如何创建网站平台