美文网首页
Kotlin零基础学习 单例模式 object

Kotlin零基础学习 单例模式 object

作者: __素颜__ | 来源:发表于2019-01-17 16:01 被阅读11次

上篇文章中,大头儿子代理小头爸爸洗碗,中个代码漏洞,看下代码

/**
 * 洗碗接口
 * */
interface IWash {
    fun wash()
}

/**
 * 大头爸爸
 * */
class SmallFather : IWash by BigSon(){
    override fun wash() {
        println("小头爸爸让大头儿子洗碗")
        BigSon().wash()
        println("小头爸爸监督大头儿子洗碗,赚了9块钱")

    }
}

/**
 * 小头儿子
 * */
open class BigSon : IWash {
    override fun wash() {
        println("大头儿子洗碗每次1块钱")
    }

}

fun main(args: Array<String>) {
    var father = SmallFather();
    father.wash()

}

如果我们重复创建SmallFather类,SmallFather类中调用 BigSon().wash(),BigSon类也会重复创建,所以需要给BigSon写成单例模式,Kotlin中的单例很方便,单例类只需要用object修饰即可,Kolin中被object修饰的类,直接在jvm创建了,并且有且只有一个。

/**
 * 洗碗接口
 * */
interface IWash {
    fun wash()
}

/**
 * 大头爸爸
 * */
class SmallFather : IWash by BigSon {
    override fun wash() {
        println("小头爸爸让大头儿子洗碗")
        BigSon.wash()
        println("小头爸爸监督大头儿子洗碗,赚了9块钱")

    }
}

/**
 * 小头儿子
 * */
object BigSon : IWash {
    override fun wash() {
        println("大头儿子洗碗每次1块钱")
    }

}

fun main(args: Array<String>) {
    var father = SmallFather();
    father.wash()

}

注意:

1.单例类用object修饰去掉class。
2.单例类的接口代理,和创建 后面都不用接”()“。
3.单例类不可以被继承。

相关文章

  • Kotlin零基础学习 单例模式 object

    上篇文章中,大头儿子代理小头爸爸洗碗,中个代码漏洞,看下代码 如果我们重复创建SmallFather类,Small...

  • Kotlin单例模式使用案例

    Kotlin单例模式 1、kotlin的object就是一个单例模式,所有字段都是static静态,方法不是静态2...

  • kotlin之单例模式

    1. Kotlin天生支持单例模式,只要使用object就可以实现一个单例模式: object ComputerF...

  • kotlin学习笔记

    kotlin基础知识 基础语法 kotlin中的特殊语法 object创建匿名内部类的写法kotlin中声明单例的...

  • 2018-04-03 Kotlin面向对象

    1:接口代理 by 2:继承 3:可见性 4:kotlin的 单例 使用object(最简单的单例模式) 5:伴生...

  • kotlin基本语法

    kotlin基础 构造方法 单例使用关键词object top-level property / function...

  • Kotlin 的单例模式

    Kotlin 的单例模式 1. 在 Java 中的单例模式 懒汉式单例模式,并且是线程安全 2. 在 Kotlin...

  • kotlin之object 单例模式

    object 对象声明,该对象是单例的 项目中的工具类可以直接用object声明,调用方法如下:FileUtils...

  • Android Kotlin 设计模式之单例模式

    Android Kotlin 单例模式 前言 最近学习Kotlin,所以也在对比Kotlin和java的差异,在j...

  • kotlin单例与java单例

    kotlin中的单例 class SingletonTestKt{ } /*//懒加载object Singl...

网友评论

      本文标题:Kotlin零基础学习 单例模式 object

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