我有一个类如下:
data class ProductState(
val id: Int,
val products: MutableMap<Int, MutableSet<Int>> = mutableMapOf(),
val customerTopics: Topic = Topic()
)
它基本上是一个数据类
现在我有一个函数,它处理products
和customerTopics
,并根据处理创建一些输出
但在我看来,在函数中包含逻辑不是一个好主意
我的问题是:
我们是否在data class
中创建用于处理对象状态的方法?如果是的话,它会是什么伴星吗?或者有没有其他的设计模式可以更好地处理这个问题?
在kotlin中,您有几个选项:
- 数据类上的附加方法(如果应该在多个其他地方调用(
- 与数据类在同一文件中的公共扩展方法(如果应该在多个其他地方调用它,但您希望保持数据类的简单性并将处理方法分开(
- 私有扩展方法位于与调用它的唯一位置相同的文件中(这仅适用于在代码中的单个位置调用此处理的情况(
- 唯一需要此处理的地方的私有方法
最佳位置实际上取决于处理是什么(它是非常特定于ProductState
还是需要额外的数据?如果它非常特定,那么将其保留为ProductState
方法或扩展函数可能是有意义的(以及它将在多少地方被触发(如果在一个非常特定的地方,那么将它作为私有扩展函数或私有方法与代码放在一起可能是最好的选择(。