单例模式
饿汉式
class Singleton{
private Singleton(){}
private final static Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
}
class Singleton{
private Singleton(){}
private static Singleton instance;
static{
instance = new Singleton();
}
public static Singleton getInstance(){
return instance;
}
}
懒汉式
class Singleton{
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
class Singleton{
private static Singleton instance;
private Singleton(){}
public static synchronized Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
class Singleton{
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance==null){
synchronized(Singleton.class){
instance = new Singleton();
}
}
return instance;
}
}
class Singleton{
private static volatile Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance==null){
synchronized(Singleton.class){
if(singletone==null){
instance = new Singleton();
}
}
}
return instance;
}
}
class Singleton{
private Singleton(){}
private static class SingletonInstance{
private static final Singleton INSTANCE = new Singletion();
}
public static Singleton getInstance(){
return SingletonInstance.INSTANCE;
}
}
enum Singleton{
INSTANCE;
}