前言:
关于23种设计模式的所有示例代码请参考:https://github.com/Wuchenwcf/MyCode/tree/master/DP
本文所述代码请参考:https://github.com/Wuchenwcf/MyCode/tree/master/DP/MyDB/Interpreter
一、解释器模式
本文将使用解释器模式实现将英文数字表达式转换为阿拉伯数字,类图如下:
如上图所示:
终结解释器是:GeExpression,HundredExpression
非终结解释器有:ThousandExpression,MillionExpression,BillionExpression
Context在其中起到的作用其实就是保存解释器的中间结果
最终的运行结果如下图:
可见,无论数字表达式有多长,都可以轻而易举地将其解析为阿拉伯数字。就是如此优秀。
解释器模式总结:
优点:解释器是一个简单的语法分析工具,具有可扩展性,修改语法只需要修改相应的关键字解释器就可以了,添加语法也只需要添加一个关键字解释器。
缺点:
递归调用效率不高