建造者Builder模式【kotlin版代码参考】
class Computer {
companion object {
inline fun build(context: Context, block: Builder.() -> Unit) =
Builder(context).apply(block).build()
}
class Builder(private val context: Context) {
internal var cpu: String? = null
internal var gpu: String? = null
fun setCpu(cpu: String?): Builder {
this.cpu = cpu
return this
}
fun setGpu(gpu: String?): Builder {
this.gpu = gpu
return this
}
fun build() = Computer()
}
}
Computer.build(this){
setCpu("cpu")
setGpu("gpu")
build()
}
适用场景:
适用于创建对象需要很多步骤,但是步骤顺序不一定固定。
如果一个对象有非常复杂的内部结构(属性),把复杂对象的创建和使用进行分离。
优点:
封装性好,创建和使用分离。
扩展性好,建造类之间独立、一定程度上解耦。
缺点
产生多余的Builder对象。
产品内部发生变化,建造者都要修改,成本较大。
1784

被折叠的 条评论
为什么被折叠?



