【问题标题】:MVP Clean Architecture - where do calculation and non data related tasks belong?MVP Clean Architecture - 计算和非数据相关任务属于哪里?
【发布时间】:2019-08-19 21:30:10
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: java android mvp clean-architecture


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      例如

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

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

      【讨论】:

        猜你喜欢
        • 2020-10-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-02
        • 1970-01-01
        • 2022-05-06
        • 2021-06-15
        • 2023-03-14
        • 1970-01-01
        相关资源
        最近更新 更多