b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

java设计模式-解释器模式(2)

电脑杂谈  发布时间:2020-04-01 11:21:12  来源:网络整理

因为解释器将被重复使用,所以在这里我们使用Flyweight模式来生成各种特定的解释器:

package com.design.interpret;
import java.util.Hashtable;
public class ExpressionFactory {
    //使用hashtable变量储存编译器列表
    private static Hashtable<Object, AbstractExpression> expressions = new Hashtable<Object, AbstractExpression>();
    public static AbstractExpression createExpression(String text) {
        String key = text.substring(0,1);
        AbstractExpression expression = null;
        switch (key) {
        case "C":
        case "D":
        case "E":
        case "F":
        case "G":
        case "A":
        case "B":
            expression = expressions.get("note");
            if (expression == null) {
                expression = new NoteExpression();
                expressions.put("note", expression);
            }
            break;
        case "O":
            expression = expressions.get("scale");
            if (expression == null) {
                expression = new ScaleExpression();
                expressions.put("scale", expression);
            }
            break;
        case "S":
            expression = expressions.get("speed");
            if (expression == null) {
                expression = new SpeedExpression();
                expressions.put("speed", expression);
            }
            break;
        }
        //System.out.println(expressions.size());
        return expression;
    }
}

客户表现:

package com.design.interpret;
public class Client {  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {
        Context context = new Context() ;  
        //设置演奏文本
        context.setPlayText("S 1500 O 2 E 0.5 G 0.5 A 3 E 0.5 G 0.5 D 3 E 0.5 "
                + "G 0.5 A 0.5 O 3 C 1 O 2 A 0.5 G 1 C 0.5 E 0.5 D 3 ");
        AbstractExpression expression = null;
        try {
            while (context.getPlayText().length()>0) {
                //使用享元模式
                expression = ExpressionFactory.createExpression(context.getPlayText());
                expression.interpret(context);
            }
        } catch (Exception e) {
        }
    }  
}  

性能:

图片描述

以上.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-159999-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...