单例模式
2016-01-08 14:06
69 查看
目的:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
有些对象我们只需要一个,比如:配置文件,工具类,线程池,缓存,日志对象等,
如果创建出多个示列,就会导致许多问题,比如占用过多资源,不一致的结果等
Test.java
Test.java
方式二的特点是加载类时比较快,但运行时获取对象的速度比较慢,因为在使用时类才会去获取对象
有些对象我们只需要一个,比如:配置文件,工具类,线程池,缓存,日志对象等,
如果创建出多个示列,就会导致许多问题,比如占用过多资源,不一致的结果等
方式一
Singleton.javaPackage com.zj; /* * 单例模式Singleton * 应用场合:用些对象只需要一个就足够了,如国代帝王,真•老婆 * 作用:保证整个应用中某个实例只有一个 */ public class Singleton { //1,将构造方法私有化,不允许外部直接创建对象 Private Singleton(){ } //2,创建类的唯一实例, private static 类的私有的静态成员,当调用这个类时会马上创建一个对象 private static Singleton instance = new Singleton(); //3,提供一个用于获取实例的方法,public static 修饰 public static Singleton getInstance(){ return instance; } }
Test.java
Package con.zj; public class Test { public static void main(String[] args){ Singleton s1 = Singleton. getInstance(); Singleton s2 = Singleton. getInstance(); If(s1==s2){ System.out.println(“s1和s2 是同一个实例”); } else { System.out.println(“s1和s2不是同一个实例”); } //执行结果为:s1和s2 是同一个实例 } }
方式二
Singleton.javaPackage com.zj; public class Singleton { //1,将构造方法私有化,不允许外部直接创建对象 Private Singleton(){ } //2,创建类的唯一实例, private static 类的私有的静态成员 //这里并没有马上创建一个实例 private static Singleton instance; //3,提供一个用于获取实例的方法,public static 修饰 public static Singleton getInstance(){ if(instance == null){ instance = new Singleton(); return instance; } else { return instance; } } }
Test.java
Package con.zj; public class Test { public static void main(String[] args){ Singleton s1 = Singleton. getInstance(); Singleton s2 = Singleton. getInstance(); If(s1==s2){ System.out.println(“s1和s2 是同一个实例”); } else { System.out.println(“s1和s2不是同一个实例”); } //执行结果为:s1和s2 是同一个实例 } }
两种方式的区别:
方式一的特点是加载类时比较慢,但运行时获取对象的速度比较快,因为在使用时对象已经加载完成方式二的特点是加载类时比较快,但运行时获取对象的速度比较慢,因为在使用时类才会去获取对象
相关文章推荐
- NOI2015.品酒大会(后缀数组)
- IDEA中GITHUB配置
- Hibernate向MySQL插入中文数据--乱码解决
- 互联网打赏
- Java-代碼混淆编译器
- lwIP(V1.3.0)RAW_API译文
- 搭建Hadoop源代码阅读环境
- 从头认识java-17.2 基本的线程机制(1)-初识多线程-2
- 自己发现写博客是很好整理自己知识点的好方法
- oc之可变字典创建 添加 删除 遍历
- linux中字符串转换函数 simple_strtoul
- 187,使用手势控制图片的缩放
- 从零开始nodejs系列文章-nodejs到底能干什么
- Java EE V7.0学习笔记-JBoss Tools 4.2.3.Final配套的WildFly版本为8.x
- 理解Java虚拟机体系结构
- 一步一步安装hadoop1.2.1
- 访问win7的d$这种默认共享时拒绝访问
- VS集成Qt环境搭建
- android、java制作sdk以及自动生成文档
- 《Java编程思想》第四版笔记