(转载) Kotlin 设计模式-建造者

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(转载) Kotlin 设计模式-建造者相关的知识,希望对你有一定的参考价值。

前言

Ktolin的可以使用DSL方式来创建对象,那么对于设计模式来说,DSL方式创建对象就类似于Java 中使用Builder对象来创建,那么来一段代码看看DSL方式创建对象吧,当然Java也可以调用的哦!

Show me the Code

class UnionBankPay private constructor(val activity: Activity,
                                       val tradeCode: String,
                                       val serverModel: String){
    //私有化构造方法
    private constructor(builder: Builder) : this(builder.activity,
            builder.tradeCode,
            builder.serverModel)

    //伴生对象,对外提供静态的build方法
    companion object {
        fun build(init: Builder.() -> Unit) = Builder(init).build()
    }

    //Builder 内部类
    class Builder private constructor() {
        constructor(init: Builder.() -> Unit) : this() {
            init()
        }

        //属性
        lateinit var activity: Activity
        lateinit var tradeCode: String
        lateinit var serverModel: String

        //DSL赋值方法
        fun activity(init: Builder.() -> Activity) = apply { activity = init() }
        fun tradeCode(init: Builder.() -> String) = apply { tradeCode = init() }
        fun serverModel(init: Builder.() -> String) = apply { serverModel = init() }

        fun build() = UnionBankPay(this)
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

调用

UnionBankPay.build {
         activity { this@MainActivity}
         tradeCode { "123123" }
         serverModel { "00" }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

或者

UnionBankPay.build {
    activity = this@MainActivity
    tradeCode = "123123" 
    serverModel = "00" 
}

以上是关于(转载) Kotlin 设计模式-建造者的主要内容,如果未能解决你的问题,请参考以下文章

Java设计模式菜鸟系列(十五)建造者模式建模与实现

java设计模式--建造者模式(Builder)

设计模式之建造者模式(C++)

设计模式之建造者模式(C++)

设计模式建造者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

java 设计模式实战,建造者模式之生产线