为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

人到中年有点甜 2023-06-14 14:36:30
我一直在做大量研究并尝试在我的应用程序中使用 MVP 和 Clean Architecture,但我仍然有很多困惑并且不完全理解它。我最大的疑问是:非数据库相关的,比如复杂的ma数学计算,逻辑应该去哪里?我在互联网上找到的每个示例应用程序都必须简单地从数据库中保存和检索一些数据。例如,我有一个屏幕,用户需要在其中插入 4 个值,然后我有采用这些值的代码,执行一些计算并返回表示要显示的数据的对象。我现在的问题是:在具有以下结构的具有干净架构项目的 MVP 中,我应该将负责生成结果的类或代码放在什么位置:view <--> presenter <--> use cases <--> repositories视图将输入发送给演示者,但是随后呢?还有许多示例使用不同的“服务”类,在其中一些示例中,它们连接到演示者,在其他示例中连接到存储库。
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

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

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

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


查看完整回答
反对 回复 2023-06-14
?
DIEA

TA贡献1820条经验 获得超2个赞

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

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

例如。

view 需要一些输入结果,您可以将其传递给 presenter ,presenter 将处理输入并将数据返回给 view。

查看完整回答
反对 回复 2023-06-14
  • 2 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信