单例模式
实现基本方法
1.将构造器设置为私有
2.并实现一个静态函数获取唯一对象
//若用枚举实现不同 枚举本身即单例
懒汉式 :
public class OnlyOne {
private static OnlyOne theOne;
private OnlyOne() {
}
//设置方法供外部获取此类对象
public synchronized static OnlyOne getOne() {
if(theOne == null) { //需要时才创建 即是懒加载 以防用不到占据资源
theOne = new OnlyOne();
}
return theOne;
}
}
饿汉式:
public class OnlyOne {
private static OnlyOne theOne = new OnlyOne();//直接创建
private OnlyOne() {
}
//设置方法供外部获取此类对象
public static OnlyOne getOne() {
return theOne;
}
}
静态内部类实现 :
public class OnlyOne {
private static class DoOnlyOne{
//此类加载时执行 静态块 只执行一次
private static final OnlyOne THE_ONE= new OnlyOne();
}
private OnlyOne() {
}
//设置方法供外部获取此类对象
public static OnlyOne getOne() {
return DoOnlyOne.THE_ONE;
}
}
枚举实现:
public enum OnlyOne {
INSTANCE;
//创建自己的函数
public void function() {
System.out.println("the one get");
}
//枚举本身即为单例
//通过 OnlyOne.INSTANCE.function() 可直接调用 都是一个对象
}