Должен ли я написать метод toJson или fromJson в классе данных Kotlin?
Упоминается, что класс данных Kotlin предназначен для хранения данных. Это эквивалентно структуре данных. Как таковой, он не должен иметь никакого метода поведения. В чистом коде реализация метода поведения в классе данных будет нарушать многие принципы, а именно, SRP, OCP, ...
Мне было интересно, если fromJson
а также toJson
методы рассматриваются как метод поведения. Если это так, то где я должен реализовать эти методы в моем коде?
Я использую класс данных Kotlin для хранения User, Product и т. Д. В своей якобы чистой архитектуре и чистом коде, который я изучаю, я ограничил этот класс данных углом для хранения только данных домена.
Я пытался найти информацию об этом, но я не могу найти никого, кто бы говорил о классе данных и этих методах.
Вот код, который я представил. Это должно быть что-то вроде этого.
data class User(val id: String, val name: String) {
fun toJson(): Json {}
fun fromJson(json: Json): User {}
}
Или я должен иметь другой класс, отвечающий за реализацию toJson и fromJson?
1 ответ
Поскольку вы пометили свой запрос чистой архитектурой, я предполагаю, что вы обращаетесь к https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html.
С этой точки зрения "предметная сущность" должна быть независимой от любого вида формата сериализации, постоянных аспектов или других специфических "технологий" или "каркасов".
Распространенным шаблоном для обработки "невежественности постоянства" для доменных объектов является шаблон репозитория. Важный аспект, который следует иметь в виду в контексте чистой архитектуры, заключается в том, что интерфейс репозитория определен на "уровне варианта использования" (бизнес-логика), а реализация находится на "уровне шлюза" или даже "уровне структуры".