【问题标题】:In MVP pattern, which layer should check internet connection?在 MVP 模式中,哪一层应该检查互联网连接?
【发布时间】:2019-08-07 10:41:49
【问题描述】:

在android中,在实现MVP模式时,应该检查哪一层网络连接?模型、视图还是演示者?

【问题讨论】:

  • 恕我直言,以上都不是。数据访问应由您的数据层处理,例如存储库或数据源。这包括提供有关数据可用性的详细信息,例如您是否可以与服务器通信。
  • @CommonsWare 我是 MVP 新手。为了检查连接,需要 Context、ConnectivityManager 和 NetworkInfo。你能告诉我,把这个逻辑放在哪里吗?
  • 正如@CommonsWare 所说;将其放入另一个包中,该包将承担有关数据的所有责任。有关数据的任何责任,例如访问数据、将从网络获取的数据转换为适当的数据模型类、将获取的数据持久化到本地缓存或本地数据库、将应用程序数据与云备份同步等。
  • 想象一下这个流程: VIEW -- (input event) ---> PRESENTER --- (provide data) --> MODEL --- (data spec) ---> REPOSITORY -- (请求数据)--> 数据(获取数据 - 本地数据库、api 等或错误)。建议这个逻辑和责任在repository或者data层。
  • 只需从全局应用程序类的 BehaviorRelay 中公开它。

标签: android android-mvp


【解决方案1】:

source

模型使用资源来检查连接。虽然它们不是模型的一部分...

型号 在具有良好分层架构的应用程序中,此模型仅是通往领域层或业务逻辑的网关。将其视为我们要在视图中显示的数据的提供者。 Model 的职责包括使用 API、缓存数据、管理数据库等。

查看 通常由 Activity 实现的 View 将包含对 Presenter 的引用。视图唯一会做的就是在每次有界面动作时从 Presenter 调用一个方法。

演讲者 Presenter 负责充当 View 和 Model 之间的中间人。它从模型中检索数据并将其格式化返回给视图。但与典型的 MVC 不同,它还决定了当您与 View 交互时会发生什么。

【讨论】:

    猜你喜欢
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多