blob: 1b6211566a03106ed5dc7dd0f18b1f68222c8965 [file] [log] [blame]
package org.test.customer
internal class Customer(first: String, last: String) {
val firstName: String
val lastName: String
private fun doSmthBefore() {}
private fun doSmthAfter() {}
init {
doSmthBefore()
firstName = first
lastName = last
doSmthAfter()
}
}
internal class CustomerBuilder {
var _firstName = "Homer"
var _lastName = "Simpson"
fun WithFirstName(firstName: String): CustomerBuilder {
_firstName = firstName
return this
}
fun WithLastName(lastName: String): CustomerBuilder {
_lastName = lastName
return this
}
fun Build(): Customer {
return Customer(_firstName, _lastName)
}
}
object User {
fun main() {
val customer = CustomerBuilder()
.WithFirstName("Homer")
.WithLastName("Simpson")
.Build()
println(customer.firstName)
println(customer.lastName)
}
}