zoukankan      html  css  js  c++  java
  • 设计模式解释器

    解释器模式


    设计原则:遵循单一职责
    常用场景:有一种语言被频繁的使用
    使用概率:0.00009%
    复杂度:中高
    变化点:语言的规则
    选择关键点:被频繁使用的语言是否可用文法表示
    逆鳞:语言的规则无限制增长或规则十分不稳定


    主要思想:
    一般主要应用在OOP开发中的编译器的开发
    比如正则的匹配,spring典型的调度任务中的expression表达式的解析



    public interface Expression {
        public int interpret(Context context);
    }
    
    
    public class Plus implements Expression {
        @Override
        public int interpret(Context context) {
            return context.getNum1()+context.getNum2();
        }
    }
    
    
    public class Minus implements Expression {
        @Override
        public int interpret(Context context) {
            return context.getNum1()-context.getNum2();
        }
    }
    
    
    public class Context {
        private int num1;
        private int num2;
    
        public Context(int num1, int num2) {
            this.num1 = num1;
            this.num2 = num2;
        }
    
        public int getNum1() {
            return num1;
        }
    
        public void setNum1(int num1) {
            this.num1 = num1;
        }
    
        public int getNum2() {
            return num2;
        }
    
        public void setNum2(int num2) {
            this.num2 = num2;
        }
    }
    
    
    public static void main(String[] args) {
            int result = new Minus().interpret((new Context(new Plus().interpret(new Context(9, 2)), 8)));
            System.out.println(result);
        }
  • 相关阅读:
    获得H.264视频分辨率的方法
    学习Mathematica
    关于LaTeX公式排版
    关于Jordan标准形
    关于surface gradient
    Jacobi-Anger expansion
    两个1/x类的广义函数
    积分计算相关内容
    关于multi-index
    关于$mathcal{D}(0,1)$上的一个有趣结论
  • 原文地址:https://www.cnblogs.com/zhaojj/p/7800567.html
Copyright © 2011-2022 走看看