1. 程式人生 > >Java 實現直譯器(Interpreter)模式

Java 實現直譯器(Interpreter)模式

/**
 * 宣告一個抽象的解釋操作
 * @author stone
 *
 */
public interface Interpreter {
	
	public void interpret(Context context);  //實際中,可以有個返回的型別,定義解釋出的資料物件
}
public class XmlSaxInterpreter implements Interpreter {

	@Override
	public void interpret(Context context) {
		System.out.println("xml sax Interpreter:" + context.getData());
	}

}
public class XmlDomInterpreter implements Interpreter {

	@Override
	public void interpret(Context context) {
		System.out.println("xml dom Interpreter:" + context.getData());
	}

}
/**
 * 包含直譯器之外的一些資訊
 * @author stone
 *
 */
public class Context {
	private String data;
	
	public String getData() {
		return data;
	}
	
	public void setData(String data) {
		this.data = data;
	}
}

/*
 * 直譯器(Interpreter)模式
 * 給定一門語言,定義它的文法的一種表示,並定義一個直譯器,該直譯器使用該表示來解釋語言中句子。 屬於行為型模式
 * 應用場合,如編譯器、正則表示式、語言規範...
 * 直譯器模式在實際的系統開發中使用的非常少,因為它會引起效率、效能以及維護等問題,
 */
public class Test {
	public static void main(String[] args) {
		Context context = new Context();
		context.setData("一段xml資料");
		new XmlSaxInterpreter().interpret(context);
		new XmlDomInterpreter().interpret(context);
	}
}