单例设计模式
来源:互联网 发布:access数据库百度云 编辑:程序博客网 时间:2024/06/06 17:32
单例模式可以说是设计模式中最简单的了,而且使用次数比较频繁,很常见了,那接下来就来练习的写一下单例模式..
--饿汉式
public class Singleton {private static Singleton singleton = new Singleton(); public static Singleton getIntence() { return singleton; }}
就是类加载就初始化了--懒汉式
public class Singleton02 {private static Singleton02 intence; private static Singleton02 getIntence() { if (intence == null) { synchronized (Singleton02.class) { if (intence == null) { intence = new Singleton02(); } } } return intence; }}
加了双重锁判断
第一个判空是为了避免不必要的同步,第二层判断是为了在null 情况下创建实例
1.给Singleton02 分配内存
2.调用Singleton02 的构造函数,初始化成员字段
3.将instance 对象指向分配的内存空间(此时instance 就不是null 了)
--枚举public void singleton03{INTANCE;private void doSome(){Log.e("TAG","INTANCE");}}
它在任何情况下都是单例的,也是最简单的
--内部类的单例实现
public class SingletonInner { /** * 内部类实现单例模式 * 延迟加载,减少内存开销 * */ private static class SingletonHolder { private static SingletonInner instance = new SingletonInner(); } /** * 私有的构造函数 */ private SingletonInner() { } public static SingletonInner getInstance() { return SingletonHolder.instance; } protected void method() { System.out.println("SingletonInner"); } }
以上4种写法都保证了线程的安全 ,第一种饿汉式是在类加载就是初始化,其他的三种不会..好了..就这个多..主要方便自己学习..88..
参考文章来自大神 鸿洋http://blog.csdn.net/lmj623565791/article/details/24468641
阅读全文
0 0
- 设计模式--单例
- 单例设计模式
- 设计模式----单例
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 设计模式-单例
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 单例设计模式
- 不设置行高,文字水平垂直居中显示
- 高性能mysql(2)索引性能优化和查询优化
- 电脑开机后自动启动项
- 线性表的链式存储的插入与删除操作
- google protobuf 在Linux下使用
- 单例设计模式
- 用python画出和excel一样的折线图加柱状图用多种线条和柱的颜色
- 安装GitLab出现ruby_block[supervise_redis_sleep] action run
- 单例模式
- 解决android4.2以下addJavaScriptInterface不安全问题
- osgearth由经纬度得到高程
- java生成唯一订单号
- iOS7到iOS11推送功能的差异总结
- kafka + zookeeper 单节点配置