Android 清洁体系结构存储库
使用谷歌推荐的架构构建应用程序似乎是分离和模块化应用程序的好方法。话虽如此,我经常会遇到这样一个事实,即在缓存来自API的数据时,可能需要对远程和本地数据源使用不同的模型。(我发现swankjesse的评论也是如此) 不同的模型看起来不错,但拥有具有多个嵌套级别的复杂模型似乎是一件麻烦事(将本地和远程模型映射到一个通用的Android 清洁体系结构存储库,android,repository,android-architecture-components,clean-architecture,Android,Repository,Android Architecture Components,Clean Architecture,使用谷歌推荐的架构构建应用程序似乎是分离和模块化应用程序的好方法。话虽如此,我经常会遇到这样一个事实,即在缓存来自API的数据时,可能需要对远程和本地数据源使用不同的模型。(我发现swankjesse的评论也是如此) 不同的模型看起来不错,但拥有具有多个嵌套级别的复杂模型似乎是一件麻烦事(将本地和远程模型映射到一个通用的数据层实体) 另一个论点是,当从网络请求数据时,API可能会响应JSON映射分页和内部的其他内容(这是ViewModel(只是一个示例)加载更多数据所需要的)。 拥有一个带有本地
数据层
实体)
另一个论点是,当从网络请求数据时,API可能会响应JSON映射分页和内部的其他内容(这是ViewModel
(只是一个示例)加载更多数据所需要的)。
拥有一个带有本地和远程数据源的存储库
看起来有点像是被破坏了(本地用对象列表响应,远程用包含对象列表的类响应)
我看到的所有示例应用程序都演示了使用简单的POJO(在生产代码中这几乎是不现实的)。
有没有解决这个架构难题的想法?我假设您有这样的模块,以及相应的数据模型:
- 模块
与域
用户项
- 模块
包含两个数据源:模块存储库
(改装-使用远程
)和模块用户响应
(房间-使用本地
)。用户实体
模块中还有一个存储库
UserMapper
用户
将有一个生日
字段:
- 模块
:远程
类用户响应(@SerializedName(“生日”)val birthdayDate:String)
- 模块
:本地
:域
类用户项(val birthdayDate:Long)
域中的数据
,同时担心本地
或远程
@Entity(tableName = "users")
class UserEntity(
@ColumnInfo(name = "birthday") val birthday: Long
)