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);

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

  • 相关阅读:
    每天干攻防,都不会写驱动了
    SSD 坏了
    据说英雄联盟要出新皮肤了
    随便写点什么,证明我还活着,VS2010出现的问题
    ida 符号路径设置
    搭建一个自己的SVN服务器
    nginx+keepalived互为主主高可用配置
    nginx+keepalived主从高可用配置
    Lnamp的高级网站架构+动静分离+反向代理
    Nginx+PHP(FastCGI)高性能服务器加载redis+memcache模块
  • 原文地址:https://www.cnblogs.com/Jax/p/913946.html
Copyright © 2011-2022 走看看