0

我的语言的MyDslJavaValidator验证器包含一个@Check需要来自树顶部的一些上下文信息。我可以通过从给定元素开始遍历模型,在 check 方法本身中收集这些信息。然而,由于上下文信息不依赖于当前元素,所以这是相当低效的。

有没有办法只计算一次状态并在所有验证中都可用?我当然可以将状态缓存在成员变量中,但由于我不确定验证器对象的生命周期是什么,我不知道这是否安全。显然,当基础模型发生变化时,必须重新计算信息。

在这种情况下,最好的模式是什么?

4

1 回答 1

0

一种简单的方法是使用“索引”来存储信息。

大纲:

  • 通过自定义IDefaultResourceDescriptionStrategy,您可以将自定义信息放入与树顶部附近的对象相对应的userData地图中。IEObjectDescription

  • 每次资源更改时都会调用该策略。因此,您始终是最新的。

  • 您的验证器可以查询IEObjectDescription树顶部附近对象的索引,提取userData并完成。

操作和访问索引的详细信息在“链接”部分中进行了说明。

于 2013-06-28T15:03:18.483 回答