我正在努力在项目中应用存储库模式。
要求并不复杂:
1.当客户端从服务器请求某些实体列表时,客户端会将它们保存到本地数据库以进行缓存。
2.如果有缓存,则客户端应使用它们(在到期时间内)。
3.当客户端收到诸如刷新数据之类的用户操作或收到某些通知时,客户端应从远程服务器更新本地数据,无论本地数据是否过期。
我了解了域实体的存储库模式抽象持久性。
因此,应用程序不需要知道实体的来源。
(来自服务器或本地数据库等)。
但是如何更新存储库隐藏的本地数据?
通过在存储库方法参数中添加标志?
fun get(id: EntityId, update: Boolean)
但是我认为这揭示了实现细节。
存储库是否应该侦听UpdateEntityRequested
之类的域事件?
答案 0 :(得分:0)
我相信您回答了自己的问题。您必须以某种方式向客户端缓存指示应该更新。就是说,如果您通过域中的事件进行介绍,那么您仍会将域与持久性概念联系在一起。
好消息是,您可以简单地说,如果某个聚合事件完全存在,那么您应该更新回服务器。不一定是特定事件。流中的任何事件都足以识别发生了更改。
如果此答案不足,请提供更多详细信息。