/*
由于要确保单例唯一实例,因此要控制对象的创建
可以用过使用构造方法来对外界不可见
*/
public class MySingleton1 {
private static MySingleton1 instance;
private MySingleton1(){}
public static synchronized MySingleton1 getInstance(){
if (instance == null){
instance = new MySingleton1();
}
return instance;
}
}
public class MySingleton2 {
private final static MySingleton2 instance = new MySingleton2();
private MySingleton2(){}
public static MySingleton2 getInstance(){
return instance;
}
}
public class MySingleton3 {
private static MySingleton3 instance = null;
private MySingleton3(){}
static {
instance = new MySingleton3();
}
public static MySingleton3 getInstance(){
return instance;
}
}
public class MySingleton4 {
private MySingleton4(){}
private static MySingleton4 getInstance(){
return Inner.instance;
}
private static class Inner{
private static final MySingleton4 instance = new MySingleton4();
}
}
public class MySingleton5 {
private volatile MySingleton5 instance;
private MySingleton5(){ }
public MySingleton5 getInstance(){
if (instance == null){
synchronized (MySingleton5.class){
if (instance == null)
instance = new MySingleton5();
}
}
return instance;
}
}
public enum MySingletonEnum {
INSTANCE;
}
//在该示例中,对单例对象实例的引用使用过如下方式获得
/*
MySingletonEnum mse = MySingletonEnum.INSTANCE;
mse.doSomething...
*/
原文:https://www.cnblogs.com/iron1213/p/14939669.html