解釋器模式
解釋器模式UML.png
本例想描述一個篩子游戲若厚,假設篩子的范圍是一到六這六個中文字裙士,最后判大小,以分號為結尾心剥。輸入類型:例(三四五;)十二點征堪,大
abstract class AbstractExpression{
Object interpret(String str);
}
抽象解釋方法
class TerminalExpression extends AbstractExpression{
public Object interpret(String str){
switch(str){
case "一":
return 1;
break;
case "二":
return 2;
break;
case "三":
return 3;
break;
case "四":
return 4;
break;
case "五":
return 5;
break;
case "六":
return 6;
break;
default:
return 0;
}
}
}
數(shù)字解釋方法
class NonTerminalExpression extends AbstractExpression{
public Object interpret(String str){
if(";".euqals(str){
return "finish"
}else{
return "finish";
}
}
}
結束解釋器
class Calculator{
TerminalExpression terminalExpression = new terminalExpression();
NonTerminalExpression nonTerminalExpression = new NonTerminalExpression();
int sum = 0;
public String calculator(String key){
for(int i = 0;i < 3;i ++){
sum = sum + terminalExpressionin.terpret(key.charAt(i));
}
Log.i("smallstrong",nonTerminalExpression. interpret(key.charAt(3)));
if(sum <= 9){
return "小";
}else{
return "大";
}
}
}
解釋器處理類
class Client{
public static void main(String args[]){
Calculator mCalculator = new Calculator();
Log.i("smallstrong",mCalculator.calculator("六六六;"));
}
}
客戶端
個人總結
解釋器模式這例子很牽強瘩缆,實際運用也是極少〉柩粒看了許多大佬們的blog都覺得不是很理解庸娱。
正則表達在編譯時的處理算是解釋器模式比較好的例子。