首页 > 解决方案 > 带有接口的 Android 存储库实现

问题描述

通常,我为我的存储库使用一个接口:

interface UserRepository {
    fun add()
    fun get(userId): User
    .....
}

我有三种类型的存储库(InMemory、数据库和网络):

他们都实现了 UserRepository: UserInMemoryRepository- UserDatabaseRepository-UserNetworkRepository

但我的网络没有任何添加用户API

这里的最佳做法是什么?

  1. 删除我的 UserRepository 接口
  2. 留一个空的添加用户方法
  3. ......(任何更好的方法)

标签: androidrepository-patternandroid-mvvm

解决方案


留空add()不符合 SOLID 原则。如果一个以上的类应该覆盖某个方法,那么你也不应该删除接口。我要做的是创建界面:

interface Repository {
    fun get(userId): User
}
...
interface UserRepository : Repository {
     fun add()
}

然后你的“网络”可以实现Repository,其余的类可以实现UserRepository。当然接口的命名取决于你,但根据 SOLID 中的“I”,最好有更多专用接口而不是一个多功能接口


推荐阅读