新闻资讯
Spring框架中的设计模式——解释器
解释器设计模式
在现实世界中,我们人类需要解释手势。他们可以对文化有不同的含义。这是我们的解释,给他们一个意义。在编程中,我们还需要分析一件事情,并决定它是什么意思。我们可以用解释设计模式来做。
此模式基于表达式和评估器部分。第一个代表一个要分析的事情。这个分析是由评价者来做出的,它们知道构成表达的人物的意义。不必要的操作是在一个上下文中进行的。
Spring主要以Spring Expression Language(SpEL)为例。这里快速提个醒,SpEL是一种由Spring的org.springframework.expression.ExpressionParser实现分析和执行的语言。这些实现使用作为字符串给出的Spel表达式,并将它们转换为org.springframework.expression.Expression的实例。上下文组件由org.springframework.expression.EvaluationContext实现表示,例如:StandardEvaluationContext。
举个SpEL的一个例子:
Writer writer = new Writer();
writer.setName("Writer's name");
StandardEvaluationContext modifierContext = new StandardEvaluationContext(subscriberContext);
modifierContext.setVariable("name", "Overriden writer's name");
parser.parseExpression("name = #name").getValue(modifierContext);
System.out.println("writer's name is : " + writer.getName());
输出应打印“Overriden writer’s name”。如你所见,一个对象的属性是通过一个表达式name = #name进行修改的,这个表达式只有在ExpressionParser才能理解,因为提供了context(前面的样例中的modifierContext实例)。
原文链接:https://mp.weixin.qq.com/s/3AWW1OX5KwMDX4CM4c39kg
回复列表