浅析单例模式
单例设计模式我现在知道的有4种。
1.饿汉式
代码如下
第一步 把无参构造私有化
pribate Singleton (){}
第二步 创建一个实例化对象作为类变量
private static Singleton singleton = new Singleton();
第三步 对外提供访问方法
public static Singleton getInstance (){
return Singleton;
}
第二种方式 延迟加载,也称懒加载。访问时会有线程安全问题,加一个同步锁可以解决,但访问效率会降低。
pribate Singleton (){}
pribate static Singleton s = null ;
public static Singleton getInstance(){
if(s==null){
synchonized(Singleton.class){
s=new Singleton();
}
}
return s;
}
3静态代码块方式
private static Singleton singleton;
static{
singleton = new Singleton();
}
public static Singleton getInstance (){
return singleton;
}
四匿名内部类的方式,这种方式最优。Outer 外部类加载的时候内部类不会加载,当外部类去调用静态方法或者变量的时候才会初始化。不会占用内寸,调用的时候才初始化。效率也高。
private static class Singleton{
privte static Singleton singleton = new Singleton();
}
private static Singleton getInstance (){
return Outer.singleton;
}
以上就是设计单例模式的思路。