Паттерн строитель. А нужен ли он в котлине?
Пробую реализовать основные паттерны проектирования на котлине, и вижу что стандартные средства языка позволяют сделать то же самое значительно проще. Как пример паттерн строитель. Сделала его реализацию и сделала аналогичный котлин-класс с конструктором. Читается и то и то одинаково, в случае с котлином код даже короче. Функционал тот же. Java подобного сделать не позволяет, а тут можно даже поменять местами параметры конструктора или вовсе их пропустить... в общем - очень удобно) Возьму себе на заметку
@RestController
class MyController (
){
@GetMapping("builderStyle")
fun builderStyle(
@RequestParam name: String,
@RequestParam score: Int,
@RequestParam email: String,
) = Person.Builder()
.name(name)
.score(score)
.email(email)
.build()
@GetMapping("kotlinStyle")
fun kotlinStyle(
@RequestParam name: String,
@RequestParam score: Int,
@RequestParam email: String,
) = KotlinStylePerson(
name = name,
score = score,
email = email
)
}
class Person {
var name: String? = null
var score: Int? = null
var email: String? = null
class Builder {
private val person = Person()
fun name(name: String) : Builder {
person.name = name
return this
}
fun score(score: Int) : Builder {
person.score = score
return this
}
fun email(email: String) : Builder {
person.email = email
return this
}
fun build() = person
}
}
class KotlinStylePerson (
var name: String? = null,
var score: Int? = null,
var email: String? = null,
)
Начать дискуссию