W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
我們通常使用解釋器模式來評估語言語法或表達。
這種類型的模式是行為模式之一。
interface Expression { public boolean evaluate(String context); } class IsInExpression implements Expression { private String data; public IsInExpression(String data) { this.data = data; } @Override public boolean evaluate(String context) { if (context.contains(data)) { return true; } return false; } } class OrExpression implements Expression { private Expression expr1 = null; private Expression expr2 = null; public OrExpression(Expression expr1, Expression expr2) { this.expr1 = expr1; this.expr2 = expr2; } @Override public boolean evaluate(String context) { return expr1.evaluate(context) || expr2.evaluate(context); } } class AndExpression implements Expression { private Expression expr1 = null; private Expression expr2 = null; public AndExpression(Expression expr1, Expression expr2) { this.expr1 = expr1; this.expr2 = expr2; } @Override public boolean evaluate(String context) { return expr1.evaluate(context) && expr2.evaluate(context); } } public class Main { public static void main(String[] args) { Expression select = new IsInExpression("Select"); Expression from = new IsInExpression("From"); Expression isSelectFrom = new AndExpression(select, from); Expression insert = new IsInExpression("Insert"); Expression update = new IsInExpression("Update"); Expression isInsertOrUpdate = new OrExpression(insert, update); System.out.println(isSelectFrom.evaluate("Select")); System.out.println(isInsertOrUpdate.evaluate("Insert")); System.out.println(isSelectFrom.evaluate("Select From")); System.out.println(isInsertOrUpdate.evaluate("Update")); } }
上面的代碼生成以下結果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: