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
}