我语言的MyDslJavaValidator
验证程序包含@Check
,需要从树顶部获取一些上下文信息。我可以通过从给定元素开始遍历模型来在check方法本身中收集该信息。但是,由于上下文信息不依赖于当前元素,因此效率很低。
有没有办法只计算一次状态并在所有验证中都可用?我当然可以将状态缓存在成员变量中,但由于我不确定验证器对象的生命周期是什么,我不知道这是否安全。显然,当底层模型发生变化时,必须重新计算信息。
在这种情况下,最好的模式是什么?
答案 0 :(得分:0)
一种简单的方法是使用“索引”来存储信息。
概要
通过自定义IDefaultResourceDescriptionStrategy
,您可以将自定义信息放入userData
的{{1}}地图中,该地图与树顶部附近的对象相对应。
每次资源更改时都会调用该策略。所以你总是最新的。
您的验证工具可以查询IEObjectDescription
的索引,查看树顶部附近的对象,提取IEObjectDescription
并完成。
有关操纵和访问索引的详细信息,请参阅"Linking"。
部分