我們爲我們未來的所有Groovy/Grails應用程序開發了一個相當複雜的框架(由多個插件組成)。這個框架的一個方面是能夠從我們存儲這些數據的各種系統中檢索用戶信息。目前我們有三個類代表一個用戶(一個用於LDAP(非AD),一個用於AD,一個用於數據庫) 。三個獨立類的原因是因爲它們訪問完全不同的系統並基於不同的基類來提供訪問這些系統所需的各種功能。還有依賴關係等需要這三類方法。 Spring Security也使用這些類中的一個(AD用於表示用戶)。也可以從另一個用戶對象類型創建任何用戶對象類型。如何緩存表示同一用戶的多個對象
我想創建的是我們緩存這些對象的一種方式。例如,在登錄期間,總是加載一個類(由Spring Security安裝)。但是,在整個使用應用程序的過程中,可能會暫時加載另一個類(例如數據庫信息)。理想情況下,我想緩存這些對象(全部代表相同的用戶),以便我們不必重新加載信息。我最終希望完成的是將一個用戶對象(比如AD)傳遞給另一個用戶類(比如數據庫)的工廠方法,並讓數據庫用戶類檢查它是否曾經存在之前爲這個用戶,如果是這樣,而不是重新創建自己,只需抓住緩存的副本。我寧願不使用中央緩存來完成所有這些緩存,而是將緩存的信息存儲在實際的對象中(看起來更清晰)。
但我不明白,但是如何做到這一點(從設計的角度來看)。因此,我正在尋求推薦哪些設計模式可以幫助我找出創建此功能的方法。
P.S.爲防萬一,所有的用戶類都擴展了不同的基類,但是它們都實現了一個共享接口。
有趣的...可以緩存插件與普通groovy類一起使用嗎? – 2014-08-29 23:17:42
它可以與任何東西一起使用。普通舊Groovy對象(POGO),普通舊Java對象(POJO),字符串,地圖,任何你能想到的東西都可以被序列化。這是一個非常靈活的插件。 – 2014-08-30 08:49:32