zoukankan      html  css  js  c++  java
  • 我也设计模式——16.Interpreter

    GOF的定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
    这个模式很少用到,我看过一个机器人指令的实现,使用了该模式。



    两个子类的实现,TernimalExpression类是具体做事情的类;NonternimalExpression类是一个容器,它的interpret方法,负责遍历其内部的所有TernimalExpression对象:
        public class TerminalExpression : AbstractExpression
        {
            
    public override void interpret(Context context)
            {
                
    //Do Something using context
            }
        }

        
    public class NonterminalExpression : AbstractExpression
        {
            
    private ArrayList rg = new ArrayList();

            
    public void AddExpression(AbstractExpression ex)
            {
                rg.Add(ex);
            }

            
    public override void interpret(Context context)
            {
                
    foreach (AbstractExpression ex in rg)
                {
                    ex.interpret(context);
                }
            }
        }

    客户端的调用如下:
                Context context = new Context();

                TerminalExpressionA a 
    = new TerminalExpressionA();
                TerminalExpressionB b 
    = new TerminalExpressionB();

                NonterminalExpression n 
    = new NonterminalExpression();
                n.AddExpression(a);
                n.AddExpression(b);

                n.interpret(context);

    这个模式我想了很久,不适合使用委托实现,会搅乱原先清晰的架构。

  • 相关阅读:
    [转]在WEB下的客户端控件的开发应用
    [转]C#将文件保存到数据库中或者从数据库中读取文件
    [转]如何组织一个高效的开发团队
    [转]使用C#调用金诚信71x系列读卡器的DLL
    [转]统一建模语言UML轻松入门之综合实例
    [转]Web application 的压力测试 MS Web Application Stress Tool (was)
    [转]使用NUnit在.Net编程中进行单元测试
    国外著名人脸识别介绍文章
    js与as通信
    php访问mysql 封装
  • 原文地址:https://www.cnblogs.com/Jax/p/913946.html
Copyright © 2011-2022 走看看