java--几种单例式

来源:互联网 发布:医学统计学简易软件 编辑:程序博客网 时间:2024/05/29 06:42

单例模式是我们经常用的设计模式之一,下面记一下几种常用的单例模式的写法,方便自己查阅

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;    }}







原创粉丝点击