The usual scenarios for interpreter mode are calculators, or formulas.
That is to say, the symbol of interpretation satisfies the element of the formula, and the client side replaces the contents of each element.
Package com.jayfulmath.designpattern.experssion; Import Java.util.HashMap; Public Abstract class experssion { // parse formulas and values where the key value in Var is the parameter in the formula, and the value is the specific number Public Abstract int Interpreter (hashmap<string, integer> var);}
Packagecom.jayfulmath.designpattern.experssion;ImportJava.util.HashMap; Public classVarexperssionextendsexperssion {PrivateString Key; @Override Public intInterpreter (Hashmap<string, integer>var) {System.out.println ("Varexperssion Interpreter key:" +key); returnVar.get (key); } Publicvarexperssion (String key) {Super(); This. Key =key; } }
public abstract class symbolexperssion experssion {experssion left; Experssion right; public Symbolexperssion (experssion Left, experssion right) { super (); left; this . Right =
import Java.util.HashMap; public class Addexperssion extends Symbolexperssion { public Addexperssion (Experssion left, Experssion right) { super (left, right); } @Override public int in Terpreter (hashmap<string, Integer> Var) { return .right.interpreter (Var); } }
Packagecom.jayfulmath.designpattern.experssion;ImportJava.util.HashMap; Public classSubexperssionextendssymbolexperssion { PublicSubexperssion (experssion left, experssion right) {Super(left, right); } @Override Public intInterpreter (Hashmap<string, integer>var) { return Super. Left.interpreter (Var)-Super. Right.interpreter (Var); }}
Design Pattern---interpreter mode