驽马十驾 驽马十驾

驽马十驾,功在不舍

目录
Kotlin系列:构造函数的优化与最佳实践
/  

Kotlin系列:构造函数的优化与最佳实践

开篇

本文通过简单总结了构造函数的通用用法,以及对应的最佳实践。

分类

单构造函数

当类满足条件:只需要一个构造函数的时候,最简单的是使用全属性的构造函数,如下所示

class Person0522(var name: String, var age: Int) 
}

当然该写法还有比较复杂的写法

比如这样:

class Person0522 constructor(var name: String, var age: Int)
  • 比最简单的写法多了一个constructor关键字

比如这样:

class Person0522 constructor(name: String, age: Int) {
    var name: String = name
    var age: Int = age
}

不过种种比较下来,还是第一种最简单。

多构造函数

当一个类需要多个构造函数的时候,我们就需要改改写法了,利用传统的 constructor来构建

class Person0522 {

    var name: String = ""
    var age: Int = -1

    constructor()
  
    constructor(name: String) {
        this.name = name
    }
  
    constructor(name: String, age: Int) : this(name) {
        this.age = age
    }

    init {
        require(age > 0) { "还没出生了..." }
    }
}

不过这种情况下,其实设计的非常不好了,因为参数nameage要么要有初始值,要么给默认值,都不怎么好。

最佳实践

当多构造函数写出来的时候,你是不是觉得很啰嗦,如果很啰嗦那么就对了,因为我们要对他进行优化,我们来看看这个写法:

class Person0522(var name: String, var age: Int = 0, var address: String = "")

val person0522 = Person0522(name = "xlf")
  • 参数是有默认值的,要么为 null,要么结合业务为某个特殊含义的值

  • 利用显示参数赋值

这样是不是非常简单了?

如果在 Java中,要简化多构造函数的情况,我们需要使用的是Builder模式,但是 kotlin的该用法,真的很省心啊。

不积跬步,无以至千里。不积小流,无以成江海。