版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mengks1987/article/details/84324715
class Person(var name: String, var age: Int) {
constructor(builder: Builder) : this(builder.name, builder.age)
companion object {
fun builder(): Builder {
return Builder()
}
}
class Builder {
var name: String = ""
var age: Int = 0
fun setName(name: String): Builder {
this.name = name
return this
}
fun setAge(age: Int): Builder {
this.age = age
return this
}
fun build(): Person {
return Person(this)
}
}
}
进阶版(推荐)
class Person(var name: String, var age: Int) {
constructor(builder: Builder) : this(builder.name, builder.age)
companion object {
inline fun build(block: Builder.() -> Unit): Person {
return Builder().apply(block).build()
}
}
class Builder {
var name: String = ""
var age: Int = 0
fun build(): Person {
return Person(this)
}
}
}
调用:
var p1 = Person.build {
name = ""
age = 10
}