• 设计模式解释器


    解释器模式


    设计原则:遵循单一职责
    常用场景:有一种语言被频繁的使用
    使用概率: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);
        }
  • 相关阅读:
    613. Shortest Distance in a Line
    182. Duplicate Emails
    181. Employees Earning More Than Their Managers
    180. Consecutive Numbers
    612. Shortest Distance in a Plane
    178. Rank Scores
    177. Nth Highest Salary
    610. Triangle Judgement
    二维气泡弹窗
    jQuery触发a标签的click事件和原生javascript的区别
  • 原文地址:https://www.cnblogs.com/zhaojj/p/7800567.html
Copyright © 2020-2023  润新知