美文网首页
高效的Kotlin——属性表示状态而不是行为

高效的Kotlin——属性表示状态而不是行为

作者: 珞泽珈群 | 来源:发表于2021-02-23 09:32 被阅读0次

属性表示状态而不是行为(Properties should represent state, not behavior)

Kotlin中的属性(property)不同于Java中的域(field),Kotlin中的属性应该看作是field + getter (+ setter):

var name: String? = null
    get() = field?.toUpperCase()
    set(value) {
        if(!value.isNullOrBlank()) {
            field = value
        }
    }

当然对于只读属性val是没有setter的。field也不是必须的,所以说,属性本质上讲就是function。正因为属性是function的本质,在Kotlin中某些方法也可以用属性来表示:

val Context.notificationManager
// or
fun Context.getNotificationManager()

那么什么时候应该使用属性,什么时候应该使用方法呢?这一条就是回答这个问题,基本原则是,属性表示的是状态,方法表示的是行为。在以下典型情形下应该考虑使用方法而不是属性:

  • 存在计算密集型运算,或者计算复杂度非常数O(1)。
  • 包含业务逻辑。
  • 非幂等,即连续多次调用会返回不一样的结果。
  • 方法的执行顺序影响返回值。
  • 可能抛出异常。

相关文章

  • 高效的Kotlin——属性表示状态而不是行为

    属性表示状态而不是行为(Properties should represent state, not behavi...

  • 设计模式(12)-状态模式

    状态模式(State Pattern)中,对象的行为依赖于它的状态(属性),类的行为是随着类自身的状态改变而改变。...

  • 玩转 Kotlin 委托属性

    Kotlin 属性 要讲 Kotlin 的委托属性,要先从 Kotlin 的属性说起,当然关于属性的定义就不多介绍...

  • <iOS 读书笔记>读 Effective OC 2

    使用 enum 来表示状态, 操作以及状态码. 关于属性: 分为计算属性和存储属性, 而就协议内的属性声明而言, ...

  • 20、行为型模式-状态设计模式

    状态设计模式(State Pattern) 对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相...

  • 状态模式

    一. 概念 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。定义...

  • Kotlin 什么是幕后字段?

    上篇文章我们了解了Kotlin中的各种类,从Kotlin的类开始说起,而类中则有属性和方法,Kotlin 中的类属...

  • Kotlin学习之属性

    Kotlin学习之属性 Kotlin中的属性主要有以下几点: Kotlin中允许包级属性的存在,即属性不一定在类里...

  • @PathVariable中使用正则表达式规范请求URL

    一. 在RESTful风格的API中,有以下特点: restful API使用URL表示资源而不是表示行为; 使...

  • 2019-01-02

    学生类(特征:状态+行为):属性 public class student{ 类体=属性+方法 属性;存储数据采用...

网友评论

      本文标题:高效的Kotlin——属性表示状态而不是行为

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