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

MVP Clean Architecture - where do calculation and non data related tasks belong?

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

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

我现在的问题是:我应该将 class 或负责生成结果的代码放在具有干净架构项目的 MVP 中的什么位置,结构如下:

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

View 向演示者发送输入,但是随后呢?此外,许多示例使用不同的 "services" classes 并且在其中一些示例中它们连接到演示者,而在其他示例中则连接到存储库。

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

视图将获取数据并将其传递给演示者,演示者应该创建一个线程(以多种方式之一 运行 异步编码,我喜欢为此使用线程池执行器)到 运行 将进行数学计算并回答演示者的用例。最后,演示者会将数据发送回视图。

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

您应该在 Presenter 本身中编写复杂且合乎逻辑的代码 为什么?-> 如果您需要任何数据库值,那么您可以通过 运行 线程从演示者那里获取它并进行进一步计算。

如果有任何验证,您应该使用通用 类 来获得结果

例如

视图需要一些输入结果,您可以将其传递给演示者, 演示者将处理输入和 return 数据以供查看。

follow this link it will help you to understand MVP like a pro