java单例模式、Scala单例模式

单例

  • java的两种单例模式
  • Scala的单例模式

java的两种单例模式

/**
 * 单例
 *      
 *       一个类只能创建一个对象,
 *       定义的步骤:
 *      恶汉式:
 *       1、私有构造器
 *       2、提供一个public的static的返回值为本类引用的方法
 *       3、为了给第2步中提供实例,创建一个private的static的成员变量
 *      懒汉式:
 *      1、私有构造器
 *      2、创建一个private的static的成员变量,没有初始化
 *      3、提供一个public的static的返回值为本类引用的方法
 */
public class Singletons {
    public static void main(String[] args) {

    }
}

class Singleton{//饿汉式
    private Singleton(){}
    //成员位置
    {
        //构造代码块

    }
    private static Singleton instance = new Singleton();
    public static Singleton getInstance(){
        return instance;
    }
}

class Singleton1{//懒汉式
    private Singleton1(){}
    private static Singleton1 instance;

    public static Singleton1 getInstance(){
        if(instance == null){
            synchronized (Singleton1.class){
                if(instance == null )
                    instance = new Singleton1();
            }
        }
        return instance;

    }

}

Scala的单例模式

object _Singleton {
  def main(args: Array[String]): Unit = {
    val s1 = Singleton
    val s2 = Singleton
    println("s2.x="+s2.x)
    s1.x = 5
    println("s1 == s2 ?"+(s1 == s2))
    println("s2.x="+s2.x)
  }

}
object Singleton{
  var x =1
}


你可能感兴趣的:(学习总结)