【发布时间】:2017-08-28 18:05:31
【问题描述】:
我们是否需要从领域层的Repository 接口为每个方法创建UseCases?
例如假设我有这样的 Repository 接口
interface ThingRepository {
void create(Thing thing);
void delete(Thing thing);
List<Thing> readAll();
int size();
}
如您所见,size() 方法返回数据库或文件中的记录数,无论如何。而且这种方法非常快。
我猜这个方法不需要UseCase,因为它不会阻塞UI线程并且可以同步执行。
那么你能解释我什么时候创建UseCases,什么时候不创建。基本上UseCase的创建有什么规则吗?
对不起,如果这个问题有一些误解。
提前致谢;)
我还在 github 上的 Android-CleanArchitecture repo 上打开了相同的 issue,但还没有人回答,这就是我在这里问的原因。
【问题讨论】:
-
UseCases 用于表示高级域逻辑,例如“获取用户列表”。获取用户列表可以从网络、本地存储库或其他方法中提取内容。您不希望它是与存储库的一对一映射,因为存储库位于架构中的不同层上。域和数据之间的一对一映射会破坏分离它们的目的。
-
@drhr 所以在我的情况下你建议我不要创建 UseCase?
-
@drhr “域和数据之间的一对一映射会破坏分离它们的目的”我明白了,我想在这种情况下使用 MVP 更好,但你有什么建议我的情况?
-
我的意思是,您不一定要严格从较低的抽象级别构建您的用例。在很多情况下,UseCase 只需要使用一个较低级别的函数——没关系。但是您不应该觉得您需要更高级别的逻辑来表示每个较低级别的逻辑。请注意 README 中域和数据层是如何分开的。一个用例最终可能会将它们中的许多组合在一起,这是它们真正实现其目的的地方。在这里自上而下而不是自下而上可能会有所帮助。
标签: android clean-architecture