Scala之单例模式

来源:互联网 发布:西甲数据 编辑:程序博客网 时间:2024/05/06 09:04
package com.uplooking.bigdata.p2
 
/**
  * scala中关于单例的模拟
  * object中的属性和方法都可以当做类似java中的静态成员,都可以通过
  * object.成员来进行调用
  */
object SingletonOps {
  def main(args: Array[String]): Unit = {
    val singleton1 = Singleton.getInstance
    val singleton2 = Singleton.getInstance
    println(singleton1 == singleton2)
    singleton1.index = 5
    println("singleton1.index: " + singleton1.index)
    println("singleton2.index: " + singleton2.index)
  }
}
 
object Singleton {
 
  private val singleton = Singleton;
 
  def getInstance = singleton
 
  var index = 1
}
/*
java中单例
步骤
1、私有化构造器
2、创建一个方法供外部调用====>静态方法
3、类内部创建一个对象,交给2中创建的方法
//饿汉式
public class Singleton {
   private static Singleton s = new Singleton();
   private Singleton(){}
 
  public static Singleton getInstance() {
    return s;
  }
}
//懒汉式
1、私有化构造器
2、类内部创建一个类的引用即可
3、当第一次调用的时候,创建对象,并返回值即可
public class Singleton {
 
   private Singleton s;
   private Singleton(){}
 
   public static Singleton getInstance() {
      if(s == null) {//同步代码块
          synchronized(Singleton.class) {
            if(s == null) {
              s = new Singleton();
            }
          }
      }
      return s;
   }
 
   //同步函数
  /* public synchronized static Singleton getInstance() {
      if(s == null) {
        s = new Singleton();
      }
      return s
   }*/
}
 
 
 
 
 
 
 
 
 
 
 
 
*
*/
0 0
原创粉丝点击