【问题标题】:Should Data Transfer Objects (DTOs) be used to bind UI too?数据传输对象 (DTO) 是否也应该用于绑定 UI?
【发布时间】:2022-05-05 22:26:43
【问题描述】:

我的问题很简单:

我有一个大型数据传输对象,例如:

data class Terminal(
  @Expose
  @SerializedName(\"inspector_code\")
  var inspectorCode:String,

  @Expose
  @SerializedName(\"inspector_id\")
  var inspectorId:Long
  [x50]
)

其中大部分用于业务逻辑,用于 http 请求、事务验证、

其中很少用于 UI。

这种类型的 DTO 也应该在表示层中使用吗?或者我可以有一个不同的并使用转换器来构建一个演示对象,这甚至存在于 mvvm 架构中吗?

    标签: kotlin mvvm clean-architecture android-mvvm


    【解决方案1】:

    DTO 应转换为本地模型类。这确实消除了端点和 UI 的耦合,并允许更灵活的架构。

    翻译 DTO 可以在存储库之类的东西中完成,而存储库又使用返回 DTO 的数据源。

    由于该问题看起来针对 Android (Android-mvvm),您也可以在此处查看本指南https://developer.android.com/topic/architecture

    【讨论】:

    • Tnx,你能给我一个本地模型类的例子吗?
    • 这取决于您的应用程序和用例。但一般来说,如果你想遵循让你的数据源模型不泄漏到 UI 中的方法,你可以从存储库中获得类似的东西,上面使用模型类终端,用于客户端数据源 TerminalDto 和例如对于 DB 数据源 TerminalEntity。然后,存储库可以在 Terminal、TerminalDto 和 TerminalEntity 之间进行转换,具体取决于数据的去向。
    猜你喜欢
    • 2011-07-01
    • 2011-01-04
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多