解释器模式
来源:互联网 发布:海王星炒股软件下载 编辑:程序博客网 时间:2024/06/05 10:08
解释器模式
解释器模式(Interpreter pattern)给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。典型的代表为正则表达式。
解释器的作用在于,有一个大家都知道的说话规则,那么如果你说的话按照这个语法或则规则,我皆可以知道你这句话是什么意思,如在不同的语言地区,人们使用了不同的语言,不懂得这个语言发音规则以及音节代表的是什么,你就听不懂,如果别人知道就能听的懂。
实现解释器有下面几步,
1.定义一个解释器接口,
public abstract class AbstractExpression {public abstract boolean interpreter(String context);}2.实现具体的语法:
public class TELLengthExpression extends AbstractExpression{private int TelNumLength;public TELLengthExpression(int TelNumLength) {this.TelNumLength = TelNumLength;}@Overridepublic boolean interpreter(String context) {if (context.length() == TelNumLength) {return true;}return false;}}
这是一个判断长度是否正确的解释器。
public class TelNumCheck extends AbstractExpression{public TelNumCheck() {}@Overridepublic boolean interpreter(String context) {if (context.substring(0, 1).equals("1")) {return true;}return false;}}这是一个判断是开始字母为1的解释器。
public class TelNoCheck extends AbstractExpression{private TELLengthExpression lengthExpression;private TelNumCheck numCheck;public TelNoCheck() {lengthExpression = new TELLengthExpression(11);numCheck = new TelNumCheck();}@Overridepublic boolean interpreter(String context) {if (numCheck.interpreter(context) && lengthExpression.interpreter(context)) {return true;}return false;}}这是一个将长度判断和首字母为1判断与操作的解释器。
3.使用解释器
public class InterpreterDemo {public static void main(String[] args) {String telNo = "13823457899";String telNo1 = "1346789234";TelNoCheck telNoCheck = new TelNoCheck();boolean isTel = telNoCheck.interpreter(telNo);boolean isTel1 = telNoCheck.interpreter(telNo1);System.out.println(telNo+"is Tel Number:"+isTel);System.out.println(telNo1+"is Tel Number:"+isTel1);}
输出结果
13823457899is Tel Number:true
1346789234is Tel Number:false
阅读全文
0 0
- 深入浅出解释器模式
- 解释器(Interpreter )模式
- Interpreter解释器模式
- Interperter 解释器模式
- 解释器模式 InterpretePattern
- 解释器模式
- 解释器模式
- 深入浅出解释器模式
- 解释器模式(python)
- 解释器模式
- 解释器模式 详解
- 解释器模式
- Java解释器模式
- 解释器模式
- Interpreter 解释器模式
- java 解释器模式
- 解释器模式
- 解释器模式
- java lambda 表达式中的双冒号的用法 ::
- java Arrays/Collections
- CNN 模型压缩与加速算法综述
- django 设置session过期时间
- C#入门基础
- 解释器模式
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
- C语言:字符数组与字符串处理 实践 1
- 通过Feign调用的方法实现接口之间的传递
- python里函数定义的理解
- Python实用黑科技——找出序列里面出现次数最多的元素
- Java中字符串中子串的查找——indexOf的用法
- Android简单UI界面的XML实现
- SpringMVC--数据转换、格式化和校验