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

    Context.java

    package edu.interpreter;
    
    public class Context {
        private String input;
        private int output;
        public String getInput() {
            return input;
        }
        public void setInput(String input) {
            this.input = input;
        }
        public int getOutput() {
            return output;
        }
        public void setOutput(int output) {
            this.output = output;
        }
    }

    Expression.java

    package edu.interpreter;
    
    /*
     * 抽象解释器
     */
    public abstract class Expression {
        public abstract void interpret(Context context);
    }

    PlusExpression.java

    package edu.interpreter;
    
    /*
     * 加法解释器
     */
    public class PlusExpression extends Expression {
    
        @Override
        public void interpret(Context context) {
            // 提示信息
            System.out.println("自动递增");
            // 获得上下文环境
            String input = context.getInput();
            // 进行类型转换
            int intInput = Integer.parseInt(input);
            System.out.println(intInput);
            // 进行递增
            ++intInput;
            // 对上下文环境重新进行赋值
            context.setInput(intInput + "");
            context.setOutput(intInput);
        }
    }

    MinusExpression.java

    package edu.interpreter;
    
    /*
     * 减法解释器
     */
    public class MinusExpression extends Expression {
    
        @Override
        public void interpret(Context context) {
            // 提示信息
            System.out.println("自动递减");
            // 获得上下文环境
            String input = context.getInput();
            // 进行类型转换
            int intInput = Integer.parseInt(input);
            System.out.println(intInput);
            // 进行递增
            --intInput;
            // 对上下文环境重新进行赋值
            context.setInput(intInput + "");
            context.setOutput(intInput);
        }
    }

    MainClass.java

    package edu.interpreter;
    
    import java.util.List;
    
    public class MainClass {
        List<Expression> list;
    
        public List<Expression> getList() {
            return list;
        }
    
        public void setList(List<Expression> list) {
            this.list = list;
        }
        
    }

    applicationContext.java

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
        <bean id="plusExpression" class="edu.interpreter.PlusExpression" />
        <bean id="minusExpression" class="edu.interpreter.MinusExpression" />
        <bean id="context" class="edu.interpreter.Context">
            <property name="input" value="30" />
        </bean>
        <bean id="mainClass" class="edu.interpreter.MainClass">
            <property name="list">
                <list>
                    <!-- 注入class -->
                    <ref bean="plusExpression" />
                    <ref bean="minusExpression" />
                </list>
            </property>
        </bean>
    </beans>

     

  • 相关阅读:
    python 打印对象的所有属性值
    selenium+python测试
    java连接3种数据库 JdbcLinkDB --201801
    又来折腾--正则表达式
    Excel 将A表的基础数据拼接到B表中来-三种方法: ctrl+回车, VLOOKUP()函数,宏
    Excel如何快速统计一列中相同数值出现的个数--数据透视表
    Jmeter、Postman 、 loadrunner SoapUI 接口测试工具
    delphi 获取时间戳 如何得到 和 js 中 new Date().getTime();的 相同?
    IIS部署项目
    C#使用log4net记录日志
  • 原文地址:https://www.cnblogs.com/jianfengyun/p/3735269.html
Copyright © 2011-2022 走看看