1.定義
解釋器模式(interpreter),給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。
2.UML圖
角色介紹:
- AbstractEcpression:抽象表達式,聲明一個抽象的解釋操作父類,並定義一個抽象的解釋方法,其具體的實現在各個具體的子類解釋器中完成。
- TerminalExpression:終結表達式,實現文法中與終結符有關的解釋操作。文法中每一個終結符都有一個具體的終結表達式與之對應。
- NonterminalExpression:非終結表達式,實現文法中與非終結符有關的解釋操作。
- Context:上下文環境類,包含解釋器之外的全局信息 。
- Client:客戶類。解析表達式,構建抽象語法樹,執行具體的解釋操作等。
3.通用模式代碼
/**
* 抽象表達式
*/
public abstract class AbstractExpression {
public abstract void interpret(Context context);
}
/**
* 終結符表達式
*/
public class TerminalExpression extends AbstractExpression {
@Override
public void interpret(Context context) {
//實現文法中與終結符有關的解釋操作
}
}
/**
* 非終結符表達式
*/
public class NonterminalExpression extends AbstractExpression {
@Override
public void interpret(Context context) {
//實現文法中與非終結符有關的解釋操作
}
}