java - 整洁的架构交互器实现

标签 java android repository clean-architecture

我正在尝试使用 Android Clean Arch 分离每一层。我关注 https://github.com/dmilicic/Android-Clean-Boilerplate 的项目,以及鲍勃叔叔的文章/代码。目前,我没有使用RxJava、Dragger等,只是使用dbflow orm数据库。现在不想惹事。

域中有多个数据存储库接口(interface)用于存储实现。对于每种数据,都有几种方法,如插入/添加、删除、更新、getXXXByXX 等。在示例代码中,它只是用户或成本存储库,对于每种数据,例如。用户在交互器中有三个文件(实现)。

交互器: 默认订阅者 获取用户详细信息 获取用户列表 用例

存储库: 用户存储库

假设有User、Cost、Device这三个repository,interactor中会有3X4--12个methods文件。是否有办法减少文件并将一个存储库的方法放入一个Impl文件中,例如涉及方法的UserOps?或者任何其他建议。

最佳答案

我建议您阅读“聚合”。

基本上,您应该只为被视为聚合的对象拥有存储库。聚合是一种始终可以独立且有意义的对象,它包含一个或多个对象。就您而言,即使没有太多信息,我也会说您有两个聚合:用户和设备。用户是一个总是有意义的东西,不需要设备或成本就有意义。另一方面,如果没有成本,成本就没有意义,因此聚合将是有成本的设备。实际上,这意味着您有 2 个存储库,一个用于检索用户,另一个用于检索需要付费的设备。

同样,由于没有太多信息,因此很可能在您的应用程序中,如果没有用户,设备就没有意义,因此您的聚合只是用户,当您添加/检索一个用户时,您会得到一个具有以下权限的用户:有成本的设备。或者所有对象都可以自己有意义,在这种情况下您将拥有 3 个存储库,但我怀疑情况是否如此。

关于java - 整洁的架构交互器实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37058892/

相关文章:

Java - socket.isConnected 使用端口 80 对任何 IP 地址返回 true

java - 映射和 FindFirst

java - 什么时候应该调用 Transaction.delistResource()?

java - 如何在 Android 上调整 Yuv 图像大小

android - 如何获取 Java API 源代码?

java - 线程 "main"java.lang.OutOfMemoryError 中的异常

java - 所有 Activity 的日期

svn:用同名本地文件夹替换外部文件夹的干净方法

java - 如何将jcompilo作为gradle依赖项添加到android studio项目

java - android代码编译期间Intellij Idea注释错误