家族战队|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 = namevar age: Int = age}不过种种比较下来 , 还是第一种最简单 。
  • 多构造函数
当一个类需要多个构造函数的时候 , 我们就需要改改写法了 , 利用传统的 constructor来构建
class Person0522 {var name: String = ""var age: Int = -1constructor()constructor(name: String) {this.name = name}constructor(name: String, age: Int) : this(name) {this.age = age}init {require(age > 0) { "还没出生了..." }}}不过这种情况下 , 其实设计的非常不好了 , 因为参数name和age要么要有初始值 , 要么给默认值 , 都不怎么好 。
最佳实践当多构造函数写出来的时候 , 你是不是觉得很啰嗦 , 如果很啰嗦那么就对了 , 因为我们要对他进行优化 , 我们来看看这个写法:
class Person0522(var name: String, var age: Int = 0, var address: String = "")val person0522 = Person0522(name = "xlf")
  • 参数是有默认值的 , 要么为 null , 要么结合业务为某个特殊含义的值
  • 利用显示参数赋值
这样是不是非常简单了?
如果在 Java中 , 要简化多构造函数的情况 , 我们需要使用的是Builder模式 , 但是 Kotlin的该用法 , 真的很省心 。
【家族战队|Kotlin系列:构造函数的优化与最佳实践】又回来更新原创文章了 , 欢迎大家持续关注~