您的位置:首页 > 其它

马士兵设计模式笔记1之单例的几种实现方式

2016-04-07 12:23 681 查看
//第一种 classic

public class Singleton{

private static Singleton uniqueInstance;

//other useful instance variables here

private Singleton(){}

public static Singleton getInstance(){

if(uniqueInstance==null){

uniqueInstance=new Singleton();

}

return uniqueInstance;

}

}

//第二种 synchronize

public class Singleton{

private static Singleton uniqueInstance;

//other useful instance variables here

private Singleton(){}

public static synchronized Singleton getInstance(){

if(uniqueInstance==null){

uniqueInstance=new Singleton();

}

return uniqueInstance;

}

}

//第三种 eagerly create

public class Singleton{

private static Singleton uniqueInstance=new Singleton();

private Singleton(){}

public static Singleton getInstance(){

return uniqueInstance;

}

}

//第四种 双检锁

public class Singleton{

private volatile static Singleton uniqueInstance;

private int field1,field2;

private Singleton(){

//initialization

}

public static Singleton getInstance(){

if(uniqueInstance==null){

synchronized (Singleton.class){

if(uniqueInstance==null){

uniqueInstance=new Singleton();

}

}

}

return uniqueInstance;

}

}

//第五种 lazy initiaization holder class

public class SingletonFactory{

private static class SingletonHolder{

public static Singleton instance=new Singleton();

}

public static Singleton getInstance(){

return SingletonHolder.instance;

}

}

//第六种 Enum Singleton

public enum Elvis{

INSTANCE;

public void leveTheBuiling(){

//.............

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: