kotlin构造者builder


/**
 *
 */
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)

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值