我应该在Kotlin数据类中编写toJson或fromJson方法吗?

时间:2019-02-13 03:13:59

标签: kotlin coding-style clean-architecture

提到Kotlin数据类用于存储数据。它等效于数据结构。因此,它不应具有任何行为方法。在干净的代码中,在数据类中实现行为方法将违反许多原则,即SRP,OCP,...

我想知道fromJsontoJson方法是否被视为行为方法。如果是,那我应该在代码中实现那些方法呢?

我正在使用Kotlin数据类来存储用户,产品等。在我正在学习的干净的体系结构和干净的代码中,我将这些数据类限制在只能存储域数据的角落。

我试图找到有关此信息,但似乎找不到任何谈论数据类和这些方法的人。

这是我想象的代码。应该是这样的。

data class User(val id: String, val name: String) {
    fun toJson(): Json {}
    fun fromJson(json: Json): User {}
}

或者我应该让其他类负责toJson和fromJson的实现吗?

1 个答案:

答案 0 :(得分:1)

当您使用干净的架构标记查询时,我假设您引用的是https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

从这个角度来看,“域实体”应该独立于任何类型的序列化格式,持久性方面或其他特定的“技术”或“框架”。

处理域对象“持久性无知”的常见模式是存储库模式。这里在干净架构的上下文中要记住的一个重要方面是,存储库的接口在“用例层”(业务逻辑)中定义,而实现在“网关层”甚至“框架层”中。