Design patterns 将对象或基本ID传递给其他类?
我正在构建一个应用程序,用户可以在其中创建新对象(例如,Design patterns 将对象或基本ID传递给其他类?,design-patterns,Design Patterns,我正在构建一个应用程序,用户可以在其中创建新对象(例如,文章)。每个项目都有一个原语唯一ID,所有这些项目都存储在SQL数据库中以及本地数据集中(例如,articleHolderlist) 为了保持数据新鲜,我时不时地从SQL DB重建整个本地acricleHolder。这将导致文章对象具有新引用。因此,我必须非常小心,因为我可能会得到内存泄漏或重复的项目 例如,如果我在另一个类中传递一个文章对象(例如,FavoriteActleView之后,articleHolder数据集使用具有新引用ID的
文章
)。每个项目都有一个原语唯一ID,所有这些项目都存储在SQL数据库中以及本地数据集中(例如,articleHolder
list)
为了保持数据新鲜,我时不时地从SQL DB重建整个本地acricleHolder
。这将导致文章
对象具有新引用。因此,我必须非常小心,因为我可能会得到内存泄漏或重复的项目
例如,如果我在另一个类中传递一个文章
对象(例如,FavoriteActleView
之后,articleHolder
数据集使用具有新引用ID的所有article
对象重建,FavoriteActleView
和articleHolder
中的项目可能相同,但引用不同,因此它们被视为不同。)
在我看来,我有两种解决方案:
- 将基元ID传递给新类(
),然后在FavoriteActleView
数据集中查找articleHolder
对象。此查找可能会根据article
大小和类型产生开销articleHolder
- 传递对象,但不是完全重建
数据集,而是更新对象的内容。这将导致维护对象的引用,但需要更多的工作articleHolder
有更好的解决方案吗?我有点困惑:你是说
ArticleHolder
是一个缓存吗?如果是这样,你可以使用,缓存中的元素在一定时间后过期。这样,如果项目从缓存中过期,你只能从DB加载一些东西。不要实现缓存我们自己!有很多开源库可以为您做到这一点。(顺便说一下,我在这里提到的与依赖注入无关)同意@Augusto的建议。将来,你可能必须在集群上部署你的应用程序。在这种情况下,每个节点都有一个内存中的文章持有者不是一个好主意。我有点困惑:你是说ArticleHolder
是一个缓存吗?如果是这种情况,你可以使用一个,缓存中的元素在一定时间后过期时间。通过这种方式,只有当项目从缓存中过期时,才能从DB中加载某些内容。不要自己实现缓存!有很多开源库可以为您实现这一点。(顺便说一下,我在这里提到的与依赖项注入无关)同意@Augusto的建议。将来,你可能需要在集群上部署你的应用程序。在这种情况下,每个节点都有一个内存中的文章持有者不是一个好主意。