设计模式-单例模式(Kotlin)

定义:单例模式是最简单也是最常用的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问。不需要实例化该类的对象。

饿汉式:类的加载就会导致该单实例对象被创建

懒汉式:类的加载不会导致该单例对象被创建,而是首次使用该对象时才会被创建

//饿汉式
class Signleton{
    companion object{
        private val instance = Signleton() //类创建了实例就会被创建
        fun getInstance() = instance //这里只是代表使用  但是对象早已创建
    }
}

//饿汉式  枚举方式
enum class Singleton{
    INSTANCE
}
//类的加载和对象的创建并不同时,但是创建对象的时候是一个动态的过程,如果同时有多个线程访问这个实例,这个时候实例还不存在,就会重复创建多个实例

//懒汉式  线程不安全
class Signleton{
    companion object{
        private var instance: Signleton? = null
        fun getInstance(): Signleton{
            if (instance == null)
                instance = Signleton()
            return instance!!
        }
    }
}


//懒汉式  线程安全  Kotlin中的懒汉式线程安全非常的简单  使用by lazy就好了
class Signleton{
    companion object{
        private val instance : Signleton by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { Signleton() }
        @JvmName("getInstance1")
        fun getInstance(): Signleton = instance
    }
}

//懒汉式  静态内部类
//推荐使用  在没有加锁的情况下,保证了多线程下的安全,并且没有任何性能影响和空间浪费  
class Signleton{
    companion object{
        fun getInstance() = InstanceHolder.INSTANCE
    }

    object InstanceHolder{
        val INSTANCE = Signleton()
    }
}

//Kotlin写法   线程安全,且懒汉式
object Singleton{
    
}

饿汉式好处:不需要线程锁之类的,性能得到的最大化

饿汉式坏处:不能在需要使用的时候创建,相比于懒汉式浪费内存

懒汉式好处:在需要使用的时候再创建对象

懒汉式坏处:因为需要加锁,所以懒汉式的性能会有损耗

tip:推荐使用静态内部类的方式,即实现了懒汉式,又没有性能损耗,是一种非常优秀的选择

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值