1懒汉式
/**
* 懒汉式
*/
public class Singleton01 {
private Singleton01(){
}
private static Singleton01 singleton01 = new Singleton01();
public static Singleton01 getSingleton01(){
return singleton01;
}
}
2饿汉式
/**
* 饿汉式
*/
public class Singleton02 {
private Singleton02(){}
private static Singleton02 singleton02 =null;
/**
* 多线程是会出错
* @return
*/
public static Singleton02 getSingleton01(){
if(singleton02==null){
singleton02=new Singleton02();
}
return singleton02;
}
/**
* 多线程处理
* @return
*/
public static Singleton02 getSingleton02(){
if(singleton02==null){
synchronized (Singleton02.class){
if(singleton02==null){
singleton02=new Singleton02();
}
}
}
return singleton02;
}
}
3 内部类
/**
* 内部类
*/
public class Singleton03 {
private Singleton03(){
}
public static Singleton03 singleton(){
return Test.as;
}
private static class Test{
public static Singleton03 as = new Singleton03();
}
}
4枚举
/**
* 枚举的方式
*/
public enum Singleton04 {
Instance;
private Singleton04() {
System.out.println("init");
}
public void print() {
}
}