首页 > 代码库 > 解释器模式
解释器模式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
/*
*
* 如同数据转换 文本解释等
可用于协议等的接收数据处理解释
*/
namespace App_MYCS.HDL_SJMS.JSCMS
{
class my_JSCMS
{
public void Dy()
{
context ct = new context();
IList<abstractExpression> list = new List<abstractExpression>();
list.Add(new TerminalExpression());
list.Add(new NonterminalExpression());
list.Add(new TerminalExpression());
list.Add(new TerminalExpression());
foreach (abstractExpression item in list)
{
item.Interpret(ct);
}
}
}
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("非终端解释器");
}
}
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; }
}
}
//---------------------------------
//要求被解释的对象
class class_nr
{
private string text;
public string Text
{
get { return text; }
set { text = value; }
}
}
//抽像解释器
abstract class Expression
{
public void Interpret(class_nr text)
{
string str="";
//对内容进行分类处理
//按条件获取出相应的字符串数据
Excute(str);//调用详细的处理
}
public abstract void Excute(string str);
}
//不同子类的处理类
class e_a : Expression
{
public override void Excute(string str)
{
//不同的处理
}
}
//不同子类的处理类
class e_b : Expression
{
public override void Excute(string str)
{
//不同的处理
}
}
//.....
class dy
{
//通过结合进行对字符串的处理
}
}
解释器模式