zoukankan      html  css  js  c++  java
  • 设计模式-之Scala单例模式

    单例介绍:

      保证整个软件系统中,某个类只能存在一个对象实例

      应用场景例如:一家店的店主只能有一个;一个车的驾驶员也只能有一个;等

      类别:

        饿汉式:      

             类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快。

            不使用时就加载到内存,占用了资源

    // 测试类
    object TestSingle extends App {
      val boss1 = Boss.getBoss
      val boss2 = Boss.getBoss
      // 1355531311 1355531311
      print(boss1.hashCode()  + " " + boss2.hashCode())  // 哈希值相等 对象为同一个 实现了单例
    }
    
    /*
    底层代码
    public SingleTon getInstance() {
    	if (s == null) {
    		s_$eq(new SingleTon());
    	}
    	return s();
    }
    */
    
    class Boss private() {  // Boss类的构造方法私有化
      var name: String = _
      println("懒汉式~~~")
    }
    
    // 懒汉式
    object Boss {
      private var b: Boss = null   // 先赋值为null
      def getBoss = {
        if (b == null) { // 判断不为null 才实例化对象
          b = new Boss  // 在这里 实例化对象
        }
        b
      }
    }
    

      

        懒汉式:

            等到引用时才会被加载

    // 测试类
    object TestSingle extends App {
      val b1 = Boss2.getBoss2
      val b2 = Boss2.getBoss2
      // 564160838 564160838  对象为同一个,形成了单例模式
      print(b1.hashCode()  + " " + b2.hashCode()) 
    }
    class Boss2 private() {  // 构造方法私有化
      var age: Int = _
      println("饿汉式~~~")
    }
    // 饿汉式
    object Boss2 {
      private val b: Boss2 = new Boss2  // 直接实例化对象
      def getBoss2 = {
        b
      }
    }
    

      

  • 相关阅读:
    jenkins使用
    pytest+allure生成接口自动化测试报告
    charles系列
    go语言安装使用
    go语言介绍
    Nginx
    python面试题-python相关
    pyhon全栈开发学习目录
    补充【第二章】supervisor守护进程保障服务
    python全栈开发基础【补充】python中列表排序,字典排序,列表中的字典排序
  • 原文地址:https://www.cnblogs.com/joey-413/p/14071450.html
Copyright © 2011-2022 走看看