Skip to content

Instantly share code, notes, and snippets.

@balsikandar-okcredit
balsikandar-okcredit / Object.kt
Created January 19, 2020 16:18
Object creation in DSL vs Builder pattern
Student.Builder()
.name("Alex")
.standard(10)
.rollNumber(720)
.build()
VS
Student.build {
name = "Alex"
@balsikandar-okcredit
balsikandar-okcredit / StudentBuilder.kt
Last active January 19, 2020 16:13
Student Builder pattern example
class Student(
val name: String?,
val standard: Int,
val rollNumber: Int
) {
private constructor(builder: Builder) : this(builder.name, builder.standard, builder.rollNumber)
class Builder {
var name: String? = null
@balsikandar-okcredit
balsikandar-okcredit / StudentDSL.kt
Last active January 19, 2020 19:57
Kotlin DSL an improvement over Builder pattern
class Student(
val name: String?,
val standard: Int,
val rollNumber: Int
) {
private constructor(builder: Builder) : this(builder.name, builder.standard, builder.rollNumber)
companion object {
inline fun student(block: Student.Builder.() -> Unit) = Student.Builder().apply(block).build()