单例模式是我们经常用的设计模式之一,下面记一下几种常用的单例模式的写法,方便自己查阅
1.饿汉单例模式--缺点就是不能延迟加载
class SingltonDemoOne{
private static SingltonDemoOne singltonDemoOne=new SingltonDemoOne();
private SingltonDemoOne() {
}
public static SingltonDemoOne getSingltonDemoOne(){
return singltonDemoOne;
}
}
2.懒汉单例模式--懒加载
class SingltonDemoTwo{
private static SingltonDemoTwo singltonDemoTwo;
private SingltonDemoTwo(){
}
public static SingltonDemoTwo getSingltonDemoTwo(){
if(singltonDemoTwo==null){
singltonDemoTwo=new SingltonDemoTwo();
}
return singltonDemoTwo;
}
}
上面的虽然实现了懒加载,但并不适用语多线程下,修改加上syncihronized
class SingltonDemoTwo{
private static volatile SingltonDemoTwo singltonDemoTwo;
private SingltonDemoTwo(){
}
public static SingltonDemoTwo getSingltonDemoTwo(){
if(singltonDemoTwo==null){
synchronized (SingltonDemoTwo.class){
if (singltonDemoTwo==null){
singltonDemoTwo=new SingltonDemoTwo();
}
}
}
return singltonDemoTwo;
}
}
3.使用静态内部类
class SingletonDemoThree{
private static class Inner{
public static SingletonDemoThree singletonDemoThree=new SingletonDemoThree();
}
private SingletonDemoThree (){
}
public SingletonDemoThree getSingleton(){
return Inner.singletonDemoThree;
}
}