我们为我们未来的所有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