【问题标题】:Where should the code processing the state of the object be?处理对象状态的代码应该在哪里?
【发布时间】:2022-01-17 17:28:33
【问题描述】:

我有一堂课如下:

data class ProductState(
  val id: Int,
  val products: MutableMap<Int, MutableSet<Int>> = mutableMapOf(),
  val customerTopics: Topic = Topic()
)

它基本上是一个数据类。
现在我有一个函数,除其他外,处理 productscustomerTopics 并根据处理创建一些输出。
但在我看来,在函数中包含逻辑并不是一个好主意。
我的问题是:
我们是否在data class 中创建方法来处理对象的状态?如果是这样,它会是一些伴生对象吗?或者是否有其他设计模式可以更好地处理这个问题?

【问题讨论】:

    标签: kotlin oop design-patterns data-class


    【解决方案1】:

    在 kotlin 中,您有多种选择:

    • 数据类的附加方法(如果应该在多个其他地方调用);
    • 与数据类在同一个文件中的公共扩展方法(如果它应该在多个其他地方调用,但您想保持数据类简单并且处理方法分开);
    • 在同一个文件中的私有扩展方法作为它被调用的唯一位置(这仅适用于要在代码中的单个位置调用此处理的情况);
    • 在唯一需要此处理的地方使用私有方法。

    最好的地方真的取决于处理是什么(它是对ProductState 非常具体还是需要额外的数据?如果它非常具体,那么将其保留为ProductState 方法或扩展函数)以及它将在多少个地方被触发(如果在一个非常具体的地方,那么也许将它与那段代码放在一起作为私有扩展函数或私有方法可能是最好的选择)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-01
      • 2019-06-07
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      相关资源
      最近更新 更多