2013-06-27 44 views
0

我的語言的驗證程序MyDslJavaValidator包含@Check,它需要來自樹頂部的一些上下文信息。通過從給定元素開始遍歷模型,我可以在檢查方法本身收集這些信息。但是,由於上下文信息不依賴於當前元素,所以這是相當低效的。MyDslJavaValidator中驗證之間的共享狀態

是否有一種方法只計算一次狀態並在所有驗證中都可用?我當然可以將狀態緩存在成員變量中,但由於我不確定驗證器對象的生命週期是什麼,我不知道這是否安全。顯然,當底層模型發生變化時,必須重新計算信息。

在這種情況下最好的模式是什麼?

回答

0

一個簡單的方法是使用「索引」來存儲信息。

大綱:

  • 通過定製IDefaultResourceDescriptionStrategy你可以把你的自定義信息爲userData地圖IEObjectDescription的是對應於靠近樹的頂部的對象。

  • 每當資源發生變化時都會調用該策略。所以你總是最新的。

  • 驗證器可以查詢索引IEObjectDescription,查找樹頂部附近的對象,提取userData並完成。

有關操作和訪問索引的詳細信息,請參見章節"Linking"