android - 带有接口的 Android 存储库实现
问题描述
通常,我为我的存储库使用一个接口:
interface UserRepository {
fun add()
fun get(userId): User
.....
}
我有三种类型的存储库(InMemory、数据库和网络):
他们都实现了 UserRepository:
UserInMemoryRepository
- UserDatabaseRepository
-UserNetworkRepository
但我的网络没有任何添加用户API
这里的最佳做法是什么?
- 删除我的 UserRepository 接口
- 留一个空的添加用户方法
- ......(任何更好的方法)
解决方案
留空add()
不符合 SOLID 原则。如果一个以上的类应该覆盖某个方法,那么你也不应该删除接口。我要做的是创建界面:
interface Repository {
fun get(userId): User
}
...
interface UserRepository : Repository {
fun add()
}
然后你的“网络”可以实现Repository
,其余的类可以实现UserRepository
。当然接口的命名取决于你,但根据 SOLID 中的“I”,最好有更多专用接口而不是一个多功能接口
推荐阅读
- python - 为什么我通过终端在 Mac OS 上安装的软件包返回 ModuleNotFoundError:尝试通过 IDLE 导入它们时
- flutter - 如何编写一个条件之一为空的 Flutter 三元运算符(什么都不做)
- mongodb - 将字符串数组传递给 MongoDb Schema
- excel - 在一台计算机上而不是在另一台计算机上获取“请重建此数据组合”
- sql-server - SQL Server 索引对不同值的查找表
- azure - Azure Blob Storage V2,来自 Azure Function App 的异常 API 调用,升级后
- sql - 同一列在自己的表上同时具有引用同一列的外键和主键的用例是什么
- amazon-web-services - 在 Redshift 上按 random() 排序非常慢
- html - 落下
- spring - 连接robovm-rt库的问题