/**
*
*/
class Person private constructor(builder: Builder) {
internal var name: String? = null
internal var age: Int? = null
init {
name = builder.name
age = builder.age
}
class Builder {
internal var name: String? = null
internal var age: Int? = null
fun name(names: String): Builder {
name = names
return this
}
fun age(ages: Int): Builder {
age = ages
return this
}
fun build(): Person {
return Person(this)
}
}
}
/**
*
*/
class Student(var name: String, var age: Int) {
constructor(builder: Builder) : this(builder.name, builder.age)
companion object {
inline fun build(block: Builder.() -> Unit): Student {
return Builder().apply(block).build()
}
}
class Builder {
var name: String = ""
var age: Int = 0
fun build(): Student {
return Student(this)
}
}
}
/**
*
*/
class People(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(): People {
return People(this)
}
}
}
fun main() {
var person = Person.Builder()
.name("xq")
.age(20)
.build()
println("" + person.name)
println("" + person.age)
println("===================================")
println("===================================")
var student = Student.build {
name = "csq"
age = 10
}
println("" + student.age)
println("" + student.name)
println("===================================")
println("===================================")
var people = People.builder().setAge(18).setName("xwe").build()
println("" + people.age)
println("" + people.name)
}
kotlin构造者builder
最新推荐文章于 2023-08-28 20:22:28 发布