java设计模式学习—单例模式
来源:互联网 发布:ipad1安装不了软件 编辑:程序博客网 时间:2024/06/18 18:06
单例模式:保证一个类只有一个实例,并提供一个访问该类的全局访问点
类型:创建类模式
单例模式的特点:
1)构造方法私有;
2)指向自己实例的私有静态引用;
3)以自己实例为返回值的静态公有方法;
/*饿汉式:一开始就加载,以空间换时间**/public class Singleton{ /*指向自己的私有静态引用*/ private static Singleton singleton = new Singleton(); /*构造方法私有*/ private Singleton(){}; /*公有的静态方法,返回值为自己的实例*/ public static Singleton getInstance(){ return singleton; }}/*懒汉式:延迟加载,用到的时候才加载*/public class Singleton{private static Singleton singleton;private Singleton(){};public static Singleton getInstance(){ if(singleton==null){ singleton = new Singleton(); } return singleton;}/*该懒汉模式非线程安全*/public class Singleton{ private static Singleton singleton; private Singleton(){} public static synchronized Singleton getInstance(){ if(singleton==null){ singleton = new Singleton(); } return singleton; }}/*该懒汉模式线程安全,但效率低*/public class Singleton{ private volatile static Singleton singleton; private Singleton(){}; public static synchronized Singleton getInstance(){ if(singleton==null){ synchronized(Singleton.class){ singleton = new Singleton(); } } return singleton; }/*该模式线程安全且效率较高:称作双重检查锁定*/
单例模式中存在的两个问题:
1)、如果单例类由不同的类加载器载入,那么可能存在多个单例类的实例。一些servlet容器对每个servlet使用不同的类装载器,这样的servtlet访问一个单例类,他们就会有各自的实例;
2)如果Singleton实现了Serializable接口,那么这个类就可能被序列化和还原;(序列化是将对象转化为字节序列的过程,反序列化是将字节序列还原成java对象的过程)
阅读全文
0 0
- java设计模式学习-单例模式
- JAVA设计模式学习7——单例模式
- 设计模式学习(Java)——单例模式
- Java设计模式学习01——单例模式
- Java设计模式学习01——单例模式
- java设计模式学习—单例模式
- Java 设计模式—单例模式
- java设计模式—单例模式
- java设计模式—单例模式
- java设计模式—单例模式
- Java设计模式—单例模式
- Java设计模式—单例模式
- Java设计模式之单例设计模式学习
- java-单例设计模式学习
- JAVA学习九:单例设计模式
- java学习07-单例设计模式
- Java学习--单例设计模式
- java学习--单例设计模式
- 设计模式学习(一) — 概述
- nginx ,分布式缓存
- java序列化和反序列化
- 第十四周项目1
- 权限修饰符
- java设计模式学习—单例模式
- Linux中的信号
- 16S预测细菌组表型-bugbase:革兰氏阴阳、生物膜、致病力、移动元件、氧气消耗等
- 数据库学习 SQL的数据定义(DDL)
- 415. Add Strings
- 数据结构课程总结
- 【贪心】BZOJ3668 [Noi2014]起床困难综合症
- Gensim官方介绍翻译
- Iterative Quantization