Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带接口的Android存储库实现_Android_Repository Pattern_Android Mvvm - Fatal编程技术网

带接口的Android存储库实现

带接口的Android存储库实现,android,repository-pattern,android-mvvm,Android,Repository Pattern,Android Mvvm,通常,我会为我的存储库使用一个界面: interface UserRepository { fun add() fun get(userId): User ..... } 我有三种类型的存储库(内存、数据库和网络): 它们都实现了UserRepository: UserInMemoryRepository-UserDatabaseRepository-UserNetworkRepository 但是我的网络没有任何添加用户的API 这里的最佳实践是什么 删除我的User

通常,我会为我的存储库使用一个界面:

interface UserRepository {
    fun add()
    fun get(userId): User
    .....
}
我有三种类型的存储库(内存、数据库和网络):

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

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

这里的最佳实践是什么

  • 删除我的UserRepository接口
  • 保留一个空的adduser方法
  • 。。。。。。(有没有更好的办法)
  • add()
    留空与可靠的原则并不一致。 若多个类应该重写某个方法,那个么您也不应该删除接口。 我要做的是创建接口:

    interface Repository {
        fun get(userId): User
    }
    ...
    interface UserRepository : Repository {
         fun add()
    }
    
    然后您的“网络”可以实现
    存储库
    ,其余的类实现
    用户存储库

    当然,接口的命名取决于您,但根据SOLID中的“I”,最好有更多专用接口,而不是一个多功能接口

    您应该只有一个RepositoryImpl,当从内存或数据库或数据库获取数据时,它内部有逻辑network@CôngHả我想这不是谷歌示例实现的方式,请看这里。在UserRepository中,它管理缓存的内存和远程网络。