为什么要使用解释器模式
有些情况我们需要对类的类容进行解释,比如说我们把“今天星期几?”分别翻译成英语,日语,泰语.这种需求就要用到解释器模式
什么是解释器模式
解释一个类内容,并且解释类有多个.
怎么使用解释器模式
UML
代码:
Translate.class
public abstract class Translate {
public abstract void translate(Context context);
}
Japanese.class
public class Japanese extends Translate{
@Override
public void translate(Context context) {
// TODO Auto-generated method stub
System.out.println("把 "+context.getStr()+" 翻译成日语.");
}
}
English.class
public class English extends Translate{
@Override
public void translate(Context context) {
// TODO Auto-generated method stub
System.out.println("把 "+context.getStr()+" 翻译成英语.");
}
}
Thai.class
public class Thai extends Translate{
@Override
public void translate(Context context) {
// TODO Auto-generated method stub
System.out.println("把 "+context.getStr()+" 翻译成泰语.");
}
}
Context.class
public class Context {
private String str;
public Context(String str){
this.setStr(str);
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
Client.class
public class Client {
public static void main(String [] args){
Context context = new Context("今天星期几?");
Translate translate = new Japanese();
translate.translate(context);
translate = new English();
translate.translate(context);
translate = new Thai();
translate.translate(context);
}
}
最后运行结果:
把 今天星期几? 翻译成日语.
把 今天星期几? 翻译成英语.
把 今天星期几? 翻译成泰语.