设计模式之解释器模式

2017-05-03  本文已影响43人  smallstrong

解释器模式

解释器模式UML.png

本例想描述一个筛子游戏,假设筛子的范围是一到六这六个中文字,最后判大小,以分号为结尾。输入类型:例(三四五;)十二点,大

abstract class AbstractExpression{
    Object interpret(String str);
}

抽象解释方法

class TerminalExpression extends AbstractExpression{
    public Object interpret(String str){
        switch(str){
            case "一":
                return 1;
                break;
            case "二":
                return 2;
                break;
            case "三":
                return 3;
                break;
            case "四":
                return 4;
                break;
            case "五":
                return 5;
                break;
            case "六":
                return 6;
                break;  
            default:
                return 0;               
        }
    }
}

数字解释方法

class NonTerminalExpression extends AbstractExpression{
    public Object interpret(String str){
        if(";".euqals(str){
            return "finish"
        }else{
            return "finish";
        }
    }
}

结束解释器

class Calculator{
    TerminalExpression terminalExpression = new terminalExpression();
    NonTerminalExpression nonTerminalExpression = new NonTerminalExpression();
    int sum = 0;
    public String calculator(String key){
        for(int i = 0;i < 3;i ++){
            sum = sum + terminalExpressionin.terpret(key.charAt(i));
        }
        Log.i("smallstrong",nonTerminalExpression. interpret(key.charAt(3)));
        if(sum <= 9){
            return "小";
        }else{
            return "大";
        }
    }
}

解释器处理类

class Client{
    public static void main(String args[]){
        Calculator mCalculator = new Calculator();
        Log.i("smallstrong",mCalculator.calculator("六六六;"));
    }
}

客户端

个人总结

解释器模式这例子很牵强,实际运用也是极少。看了许多大佬们的blog都觉得不是很理解。
正则表达在编译时的处理算是解释器模式比较好的例子。

上一篇 下一篇

猜你喜欢

热点阅读