Kotlin Builder模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 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
        }

猜你喜欢

转载自blog.csdn.net/mengks1987/article/details/84324715
今日推荐