设计模式-解释器模式-创新互联
场景:大小写数字互相转换
我们提供的服务有:网站制作、网站建设、微信公众号开发、网站优化、网站认证、广安ssl等。为成百上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的广安网站制作公司abstract class Expresstion
{
//解释器
public void Interpret(PlayContext context)
{
string value = context.PlayText.Substring(0,1);
Translate(value);//处理当前字符
context.PlayText = context.PlayText.Substring(1); //去除已处理的字符
}
public abstract void Translate(string key);
}
class Upper : Expresstion
{
public override void Translate(string key)
{
string upper = "";
switch (key)
{
case "1":upper = "一";break;
case "2": upper = "二"; break;
case "3": upper = "三"; break;
case "4": upper = "四"; break;
case "5": upper = "五"; break;
case "6": upper = "六"; break;
case "7": upper = "七"; break;
case "8": upper = "八"; break;
case "9": upper = "九"; break;
case "0": upper = "零"; break;
}
Console.Write(upper);
}
}
class Lower : Expresstion
{
public override void Translate(string key)
{
string lower = "";
switch (key)
{
case "一": lower = "1"; break;
case "二": lower = "2"; break;
case "三": lower = "3"; break;
case "四": lower = "4"; break;
case "五": lower = "5"; break;
case "六": lower = "6"; break;
case "七": lower = "7"; break;
case "八": lower = "8"; break;
case "九": lower = "9"; break;
case "零": lower = "0"; break;
}
Console.Write(lower);
}
}
//上下文
class PlayContext
{
private string playText;
public string PlayText
{
get
{
return playText;
}
set
{
playText = value;
if (value.Length > 0)
{
Expresstion expresstion = null;
string values = playText.Substring(0, 1);
switch (values)
{
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
case "0": expresstion = new Upper(); break;
case "一":
case "二":
case "三":
case "四":
case "五":
case "六":
case "七":
case "八":
case "九":
case "零": expresstion = new Lower(); break;
}
expresstion.Interpret(this);
}
}
}
}
//前端
static void Main(string[] args)
{
PlayContext playContext = new PlayContext();
playContext.PlayText = "123四五六7八9零";
Console.ReadLine();
}
总结:设定规则将当前语法转变成另外一种语言。当一个语言需要解释执行,并且可将该语言中的句子表示为抽象语法树的时候,可使用该模式。
好处:容易扩展文法规则,并且各个节点的规则类很容易编写。
缺点:用了递归,效率要差、使用场景不多、规则多的时候难维护。
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
本文名称:设计模式-解释器模式-创新互联
网页路径:http://pwwzsj.com/article/dieoeh.html