设计模式之解释器模式

来源:互联网 发布:linux rpm安装mysql 编辑:程序博客网 时间:2024/05/23 01:17

为什么要使用解释器模式

有些情况我们需要对类的类容进行解释,比如说我们把“今天星期几?”分别翻译成英语,日语,泰语.这种需求就要用到解释器模式

什么是解释器模式

解释一个类内容,并且解释类有多个.

怎么使用解释器模式

UML

代码:

Translate.class

public abstract class Translate {public abstract void translate(Context context);}

Japanese.class

public class Japanese extends Translate{@Overridepublic void translate(Context context) {// TODO Auto-generated method stubSystem.out.println("把 "+context.getStr()+" 翻译成日语.");}}

English.class

public class English extends Translate{@Overridepublic void translate(Context context) {// TODO Auto-generated method stubSystem.out.println("把 "+context.getStr()+" 翻译成英语.");}}

Thai.class

public class Thai extends Translate{@Overridepublic void translate(Context context) {// TODO Auto-generated method stubSystem.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);}}

最后运行结果:

把 今天星期几? 翻译成日语.
把 今天星期几? 翻译成英语.
把 今天星期几? 翻译成泰语.