美文网首页
用具名可选参数而不是构建者模式

用具名可选参数而不是构建者模式

作者: bravelion | 来源:发表于2019-10-01 16:18 被阅读0次

1.构建者模式:

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。如下:

Retrofit.Builder().client(okHttpClient)

//TODO GsonConverterFactory的作用

    .addConverterFactory(GsonConverterFactory.create(gson))

.addCallAdapterFactory(RxJava2CallAdapterFactory.create())

.baseUrl(BASE_URL)

.build()

2.kotlin中的具名可选参数

kotlin中的函数和构造器都支持具名可选参数,主要表现在两点:

1)在具体化一个参数的取值时,可以通过带上它的参数名,而不是它在所有参数中的位置决定;

2)由于参数可以设置默认值,这允许我们只给出部分参数的取值,而不是它所有的参数。

如下:

class Robot(val code: String,

            val battery: String? =null,

            val height: Int? =null,

            val weight: Int? =null){

}

val robot1 = Robot(code = "007")

val robot2 = Robot(code = "007",battery = "R6")

val robot3 = Robot(code = "007",height = 100, weight = 80)

3.添加require功能

如果,某些参数的设置有限制,可以使用require,如下:

class Robot(val code: String,

            val battery: String? =null,

            val height: Int? =null,

            val weight: Int? =null) {

init {

        require(weight ==null ||battery !=null){

            "Battery should be determined when setting weight"

        }

    }

}

所以,在kotlin中,当需要创建多参数的对象时,除了使用构建者模式,还可以考虑使用具名可选参数实现。

本文摘自《Kotlin核心编程》

相关文章

网友评论

      本文标题:用具名可选参数而不是构建者模式

      本文链接:https://www.haomeiwen.com/subject/qxphpctx.html