Java 實現直譯器(Interpreter)模式
阿新 • • 發佈:2019-02-18
/**
* 宣告一個抽象的解釋操作
* @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); } }