第 17 章 设计模式(2 >>> 单利模式)

一、基本介绍

1、什么是单例模式
单例模式是指:保证在整个的软件系统中,某个类只能存在一个对象实例。
2、单例模式的应用场景
	比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象。SessionFactory并不
是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,这时就会使用到单例模式。
	Akka [ActorySystem 单例]
3、单例模式的应用案例
	Scala中没有静态的概念,所以为了实现Java中单例模式的功能,可以直接采用类对象(即伴生对象)方式
构建单例对象。

示例代码:

package com.lj.akka.singleton

/**
  * @author Administrator
  * @create 2020-03-27
  */
object SingleTonTest01 extends App {

    // 懒汉式使用测试
    val s1_01 = SingleTon.getInstance
    val s1_02 = SingleTon.getInstance
    // 可以看出两个hashCode()值是一样的,是同一个对象
    println(s1_01.hashCode() + " - " + s1_02.hashCode())   // 1720435669 - 1720435669

    //饿汉式使用测试
    val s2_01 = SingleTon02.getInstance
    val s2_02 = SingleTon02.getInstance
    // 可以看出两个hashCode()值是一样的,是同一个对象
    println(s2_01.hashCode() + " - " + s2_02.hashCode())  // 1595953398 - 1595953398
    println(s2_01 == s2_02)  // true


}

// 方式1:懒汉式(顾名思义,创建对象之前先判断是否为空,为空才创建对象!)
// 将SingleTon的构造方法私有化
class SingleTon private() {

}

object SingleTon {
    private var s: SingleTon = null
    def getInstance = {
        if (s == null) {
            s = new SingleTon
        }
        s
    }
}

// 方式2:饿汉式(顾名思义,不管这个对象有没有上来就创建这个对象!)
// 将SingleTon02的构造方法私有化
class SingleTon02 private() {
    println("~~~~")
}

object SingleTon02 {
    private val s: SingleTon02 = new SingleTon02
    def getInstance = {
        s
    }
}

对以前的知识回顾,加深基础知识!
学习来自:北京尚硅谷韩顺平老师—尚硅谷大数据技术之Scala
每天进步一点点,也许某一天你也会变得那么渺小!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值