java - MVP Clean Architecture - 计算和非数据相关任务属于哪里?

标签 java android mvp clean-architecture

我一直在做大量的研究,并尝试在我的应用程序中使用 MVP 和 Clean Architecture,但我仍然有很多困惑并且不完全理解它。我最大的疑问是:非数据库相关的,比如复杂的数学计算、逻辑应该去哪里?我发现的互联网上的每个示例应用程序都必须简单地从数据库中保存和检索一些数据。

例如,我有一个屏幕,用户需要在其中插入 4 个值,然后我有代码接受这些值,执行一些计算并返回表示要显示的数据的对象。

我现在的问题是:我应该将负责在具有整洁架构项目的 MVP 中生成结果的类或代码放置在哪里,其结构如下:

view <--> presenter <--> use cases <--> repositories

View 将输入发送给演示者,但是然后?此外,许多示例使用不同的“服务”类,其中一些示例连接到演示者,其他示例连接到存储库。

最佳答案

用例是模型的一部分。模型中包含数据(定义数据如何存储在内存中的 pojo)和用例。 您的所有业务逻辑(如这种复杂的数学计算)必须位于一个或多个用例中。

View 将获取数据并将其传递给演示者,该演示者应该创建一个线程(在异步运行代码的多种方式之一中,我喜欢为此使用 threadpoolexecutors)来运行用例,该用例将进行数学计算和回答主持人。最后,演示者将数据发送回 View 。

除非您必须检索任何数据(来自传感器、文件、数据库、URL 响应...)或永久存储它,否则我认为在这种情况下您不需要存储库。

关于java - MVP Clean Architecture - 计算和非数据相关任务属于哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57564174/

相关文章:

android - 如何使用 3rd 方 SDK 遵循 MVP 架构?

java - NIO2 n00b,FileVisitor/BufferedWriter

java - 使用异常来验证输入

java - 从 java.util.date 转换为 java.sql.date 时返回的日期不正确

android - 如何使用 Data Api 将照片上传到 picasa 网络相册?

android - 如果您有设备 key ,是否可以访问另一个应用程序数据库?

java - MVP 和 GWT 小部件之间的通信

android - 具有 Viewmodel 的 Android 上的 Headless Activity

java - 无法使用 BroadcastReceiver 接收位置更新

android - 使用 Apache POI 库解析出现在 Excel 工作表中的值