建造者模式

2019-02-19  本文已影响0人  涂山小狐妖

建造者模式

/*
产品和产品的建造者*/
class Product {
    var color: Int = Color.BLACK
        private set(value) {
            field = value
        }
    var name: String = "unname"
        private set(value) {
            field = value
        }
    var size: Int = 0
        private set(value) {
            field = value
        }

    private constructor()

    private constructor(builder: Builder) {
        this.color = builder.color!!
        this.name = builder.name!!
        this.size = builder.size!!
    }

    fun show() {
        println("name:$name;size:$size;color:$color")
    }

//产品的建造者
    class Builder {
        var color: Int? = null
        var name: String? = null
        var size: Int? = null

        fun setColor(color: Int): Builder {
            this.color = color
            return this
        }

        fun setSize(size: Int): Builder {
            this.size = size
            return this
        }

        fun setName(name: String): Builder {
            this.name = name
            return this
        }

        fun build(): Product {
            return Product(this)
        }
    }
}

//使用
fun main(args: Array<String>) {
    val builder = Product.Builder()
    val product = builder.setColor(Color.RED)
        .setName("red")
        .setSize(10)
        .build()

    product.show()
}
上一篇 下一篇

猜你喜欢

热点阅读