清洁架构 - 在使用存储库模式和用例刷新的同时获取缓存数据

Posted

技术标签:

【中文标题】清洁架构 - 在使用存储库模式和用例刷新的同时获取缓存数据【英文标题】:Clean Architecture - obtaining cached data while refreshing it using repository pattern and use cases 【发布时间】:2021-01-12 15:56:06 【问题描述】:

我有一个关于最佳实践的问题。我正在尝试在使用 MVVM 的示例应用程序中应用 Clean Architecture。我的问题是,如果 ViewModel 应该调用用例而不是直接调用存储库(可以访问数据库和 API),但是我想在刷新信息时显示缓存的结果,那么 ViewModel 应该如何如果它使用的是用例而不是存储库,则访问缓存的数据?

我阅读了this post 和android official doc,但我不确定哪种方法是实现这种行为的最佳方式。

【问题讨论】:

github.com/android/architecture-components-samples/blob/… 但这里的视图直接使用 ViewModel 【参考方案1】:

考虑到关注点分离,我喜欢使用装饰器模式来实现缓存。根据您的具体实现,围绕存储库或围绕用例交互器的装饰器可能是一种解决方案。

【讨论】:

但是如果您使用装饰器模式,那么例如存储库将不得不提供一种方法来从缓存中检索信息,不是吗?那就是初始化的用例,当你首先要获取缓存数据时 装饰器的界面不要改变。缓存存储库总是返回缓存的数据。缓存装饰器的实现可能依赖于外部缓存实现。

以上是关于清洁架构 - 在使用存储库模式和用例刷新的同时获取缓存数据的主要内容,如果未能解决你的问题,请参考以下文章

清洁架构用例/领域层的相关性

清洁架构和身份验证。正确的方式?

DDD层和清洁架构

清洁架构:为不同的数据源使用不同的模型类?

清洁架构:用例输出端口

清洁架构、用例和实体