提到Kotlin数据类用于存储数据。它等效于数据结构。因此,它不应具有任何行为方法。在干净的代码中,在数据类中实现行为方法将违反许多原则,即SRP,OCP,...
我想知道fromJson
和toJson
方法是否被视为行为方法。如果是,那我应该在代码中实现那些方法呢?
我正在使用Kotlin数据类来存储用户,产品等。在我正在学习的干净的体系结构和干净的代码中,我将这些数据类限制在只能存储域数据的角落。
我试图找到有关此信息,但似乎找不到任何谈论数据类和这些方法的人。
这是我想象的代码。应该是这样的。
data class User(val id: String, val name: String) {
fun toJson(): Json {}
fun fromJson(json: Json): User {}
}
或者我应该让其他类负责toJson和fromJson的实现吗?
答案 0 :(得分:1)
当您使用干净的架构标记查询时,我假设您引用的是https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html。
从这个角度来看,“域实体”应该独立于任何类型的序列化格式,持久性方面或其他特定的“技术”或“框架”。
处理域对象“持久性无知”的常见模式是存储库模式。这里在干净架构的上下文中要记住的一个重要方面是,存储库的接口在“用例层”(业务逻辑)中定义,而实现在“网关层”甚至“框架层”中。