博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
研磨设计模式学习笔记4--单例模式Signleton
阅读量:6573 次
发布时间:2019-06-24

本文共 1423 字,大约阅读时间需要 4 分钟。

需求:加载配置文件,由于配置文件全局唯一,所以不用过多对象,建一个就可以了。

优点:单例模式本质就是为了控制实例数目。

一、饿汉式

public class Singleton{    private Singleton (){        //加载配置文件....    }    private static Singleton singleton = new Singleton();    public static Singleton getInstance(){        return singleton;    }}

二、懒汉式

public class Singleton{    private Singleton (){        //加载配置文件....    }    private static Singleton singleton = null;    public static Singleton getInstance(){        if(singleton==null){            singleton = new Singleton();        }        return singleton;    }}

这种懒汉式存在线程安全问题,可以利用双重检查加锁避免。

public class Singleton{    private Singleton (){        //加载配置文件....    }    private volatile static Singleton singleton = null;    public static Singleton getInstance(){        if(singleton==null){            synchronized (Singleton.class){                if(singleton==null){                    singleton = new Singleton();                }            }        }        return singleton;    }}

这种方式解决了线程安全为题,但用了volatile,效率降低,用静态内部类可以解决这一问题。

public class Singleton{    private Singleton (){        //加载配置文件....    }    private static class SingletonHolder{        private static Singleton singleton = new Singleton();    }    public static Singleton getInstance(){        return SingletonHolder.singleton;    }}

三、枚举

public enum  Singleton{    instance;    Singleton(){        //加载配置文件....    }}

 

转载于:https://www.cnblogs.com/liuboyuan/p/9651298.html

你可能感兴趣的文章
Union大小
查看>>
南邮CTF--bypass again
查看>>
函数的渐近增长
查看>>
动态参数
查看>>
FirewallD常用命令及设置
查看>>
Slight difference between C++ and C
查看>>
c++类的嵌套(1)
查看>>
Android SqlLite数据库的创建、增、删、改、查、使用事务
查看>>
phpStorm无法使用svn1.8的解决办法
查看>>
Talk is cheap,show me the code
查看>>
[Java]知乎下巴第3集:来人啊快把知乎的答案装到篮子里去
查看>>
解决中文乱码的问题
查看>>
前端异常测试
查看>>
JSON与localStorage的爱恨情仇
查看>>
input验证码框,输入非数字或非12位时,红框提示;每4位加一个空格
查看>>
IOS上iframe的滚动条失效的解决办法
查看>>
C++_012C++11的语法新特性
查看>>
Git学习笔记:常用命令总结
查看>>
iOS - OC 与 Swift 互相操作
查看>>
sort、qsort排序
查看>>