Валидация и DDD - классы данных kotlin - PullRequest
0 голосов
/ 30 августа 2018

В Java я делал бы проверку при создании конструктора в доменном объекте, но при использовании класса данных из kotlin я не знаю, как сделать подобную проверку. Я мог бы сделать это в сервисе приложений, но я хочу придерживаться объекта домена, и это логика. Лучше показать на примере.

public class Example {

    private String name;

    Example(String name) {
        validateName(name);
        this.name = name;
    }
}

В Kotlin у меня есть только класс данных, есть ли способ сделать это аналогично стилю Java?

data class Example(val name: String)

1 Ответ

0 голосов
/ 30 августа 2018

Вы можете получить аналогичный эффект, используя метод фабрики-компаньона :

data class Example private constructor(val name: String) {
    companion object {
        operator fun invoke(name: String): Example {
            //validateName
            return Example(name)
        }
    }
}

...

val e = Example("name")
e.name //validated
...