/**
* 解释器
*/
public class Main {
public static void main(String[] args) {
String context = "context";
AdvanceExpression advanceExpression = new AdvanceExpression();
SimpleExpression simpleExpression = new SimpleExpression();
advanceExpression.interpret(context);
simpleExpression.interpret(context);
}
}
public interface Expression {
void interpret(String msg);
}
public class AdvanceExpression implements Expression {
@Override
public void interpret(String context) {
System.out.println("高级解释器:" + context);
}
}
public class SimpleExpression implements Expression {
@Override
public void interpret(String context) {
System.out.println("简单解释器:" + context);
}
}
用法:
很多初学者看了莫名其妙,这不还是策略吗,这回是固定传入参数不变,用实现同一接口的多个对象分别进行处理。
策略模式和解释器模式的区别
举个类比吧,比如说我吃饭了,是不是也能说饭被我吃了
这两个模式也是这个道理,策略模式是传入策略,解释器模式是传入处理数据,只是策略的选择不同,一种靠的是传入不同的策略,一种是直接换个对象,技术上表达的就是固定对象还是固定传值。
业务上,策略模式体现的是选择某个算法处理业务,而解释器模式,可以理解为对数据的转换,一个体现的是处理,一个是转换,本质上没有太大的差别。
一般情况下我们还是选用策略模式,解释器模式从量级上感觉上更重一些。