Android clean architecture 的分层结构

标签 android mvp clean-architecture

我正在构建一个具有整洁架构的 Android 应用程序 在数据层使用 MVP 模式和存储库模式。 我对业务对象有点困惑。 是否应该在演示文稿中使用一个对象 和域/数据层中的另一种类型的相同对象? 如果是,那么何时何地将对象转换为其他类型?

最佳答案

虽然这在技术上是可行的,但通常不需要为表示层提供领域实体的特殊表示。

有时,当表示层需要将多个实体 bundle 在一起时(例如,显示有关参与聊天的两个用户的信息),您可能会发现自己处于这样的位置。在这种情况下,您可以定义一个包装器,将所需的实体 bundle 在一起。

然而,根据我的经验,这种 bundle 很少需要,而且需要付出代价:表示层“等待”所有 bundle 数据,即使部分数据可能已经显示给用户(例如,关于一个用户的信息)可以立即显示,但有关其他用户的信息是从服务器获取的)。这会降低应用程序的感知响应能力。

一般而言,对于客户端应用程序,域对象的方案通常源自用户界面规范。因此,如果您发现自己正在考虑表示层的域对象的单独表示,应用程序中很可能已经存在以下设计问题之一:

  1. 应用程序中使用的域对象与用于与服务器进行数据交换的域对象相同
  2. 应用的需求发生了变化,但领域对象并没有相应地改变

您总是希望网络层与应用程序的其余部分分离。这包括与服务器进行数据交换时使用的方案。如果您的域对象满足服务器 API 施加的约束,但不满足表示层的要求,那么最好在网络层和应用程序的其余部分之间引入“翻译”逻辑。

如果应用程序的需求发生了变化,但域对象没有相应更新,那么最好只审查设计并根据当前需求更新整个应用程序,而不是对表示层进行单独表示。

关于Android clean architecture 的分层结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44746286/

相关文章:

android - java.lang.OutOfMemoryError 在 android.graphics.BitmapFactory.decodeResource (BitmapFactory.java :374)

flutter - 在 Flutter、MVVM 架构中将模型转换为实体的正确方法?

android - 整洁的架构——简单的 View 逻辑应该在 Presenter 上还是在 View 上?

Android:将布局膨胀为 fragment 但 onCreate 不启动

android - 动态更改 ActionBar 中的图标

android - 在 Android MVP 中通过构造函数将 Fragment 的(View)Presenter 传递给 Adapter

java - 使用 CellTable 实现 MVP 架构

c# - MVC 的大量服务使得 Controller 构造函数非常庞大。

asp.net-core - Net core MVC 整洁的架构,没有存储库模式

android - 将依赖版本从应用程序继承到库模块