单例模式
来源:互联网 发布:js 对象添加属性和值 编辑:程序博客网 时间:2024/06/05 19:11
Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍四种:懒汉式单例、饿汉式单例、静态内部类、枚举。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。一个合格的单例模式要满足三种条件,线程安全,懒加载(不用不创建),调用效率要高,推荐使用静态内部类和枚举方式(枚举没懒加载)。应用场景win的任务管理器,程序中的数据库链接,线程池。
/** * 单例模式饿汉式 * @author lilili *饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以天生是线程安全的。 */public class Test {private Test(){}//1 构造函数给私有了(这样正常情况下不能够new了,但是可以通过反射或反序列化去创建新的对象) private static final Test t=new Test();//2 初始化先创建对象 属于类信息public static Test getTest(){return t;}}
/** * 单例模式懒汉式 * @author lilili * */public class Test01 {private Test01(){}//1 构造函数给私有了(这样正常情况下不能够new了) private static Test01 t;//2 声明public static synchronized Test01 getTest(){//调用时候才new称为懒 线程不安全需要加synchronized if(t == null)t=new Test01();return t;}}
/** * 单例模式静态内部类 * @author lilili * */public class Test02 {private Test02(){}//1 构造函数给私有了(这样正常情况下不能够new了) private static final class Test002{//静态内部类在加载时候创建天然线程安全 private static Test02 t=new Test02();//2 声明 } public static Test02 getTest(){//这种比上面懒汉 饿汉都好一些,既实现了线程安全,又避免了同步带来的性能影响开发中常用。return Test002.t;}}
/** * 单立模式枚举 * @author lilili *枚举模式本身就是单立模式,由虚拟机提供保障,避免了通过反射反序列化去创建新的对象 */public enum Test03 {INSTANCE;public void t(){}}
Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍四种:懒汉式单例、饿汉式单例、静态内部类、枚举。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。一个合格的单例模式要满足三种条件,线程安全,懒加载(不用不创建),调用效率要高,推荐使用静态内部类和枚举方式(枚举没懒加载)。应用场景win的任务管理器,程序中的数据库链接,线程池。
阅读全文
1 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- 使用Ambari快速部署Hadoop大数据环境
- linux常用命令小教程(系统设置类)
- 懒汉和饿汉单例模式以及单例模式的概念
- git配置多个账户登录
- 【HDU 1312 Red and Black】+ DFS + BFS
- 单例模式
- java错题笔记
- 算法铺子之排序---快速排序(二)
- 网络流(模板 转)
- [生而为人-思考] 读《网易一千零一夜》笔记
- AJAX请求
- 模板--bfs和dfs
- Java源码阅读-LinkedList
- MySQL的or/in/union与索引优化