java中的单例模式
来源:互联网 发布:手机装windows 编辑:程序博客网 时间:2024/06/07 01:12
在单例模式中,一个类只能创建一个实例,不管何时调用getInstance(),获得的都是同一个对象的引用,因为在singleton中都被声明为static,所以在程序运行时不会被jvm回收,所以自始至终都是同一个对象的引用,
关于Singleton的几种方式,
1:是懒汉模式,在需要这个对象的时候去检查引用是否为空,如果为空则创建一个新的对象,并且这个对象一直被静态引用持有。这样每次调用getInstance()方法的时候都需要调用判断。
2:是饿汉模式,在一开始就让static引用持有一个对象,在调用getInstance()时就直接返回此对象。
这两种模式都是让Singleton的构造方法为private,使得外界不能通过构造方法来实例化更对类的对象。
package tablejava;public class Singleton { private static Singleton uniqueInstance_Lazy; private static Singleton uniqueInstance_Hunger=new Singleton(); //保证外部类不会通过调用构造方法来实例化其他对象 private Singleton() { } public static Singleton getInstance_lazy() { if(uniqueInstance_Lazy==null) { uniqueInstance_Lazy=new Singleton(); } return uniqueInstance_Lazy; } public static Singleton getInstance_Hunger() { return uniqueInstance_Hunger; } public static void main(String[] args) { Singleton single1_1=Singleton.getInstance_lazy(); Singleton single1_2=Singleton.getInstance_lazy(); if(single1_1==single1_2) { System.out.println("single1_1和single1_2是同一个对象"); }else { System.out.println("single1_1和single1_2不是同一个对象"); } Singleton sigle2_1=Singleton.getInstance_Hunger(); Singleton sigle2_2=Singleton.getInstance_Hunger(); if(sigle2_1==sigle2_2) { System.out.println("sigle2_1和sigle2_2是同一个对象"); }else { System.out.println("sigle2_1和sigle2_2不是同一个对象"); } }}
输出结果:
single1_1和single1_2是同一个对象sigle2_1和sigle2_2是同一个对象
阅读全文
0 0
- java中的单例模式
- java中的单例模式
- java中的单例模式
- java中的单例模式
- Java中的单例模式
- java中的单例模式
- java中的单例模式
- Java中的单例模式
- JAVA中的单例模式
- Java中的单例模式
- java中的单例模式
- JAVA中的单例模式
- Java中的单例模式
- Java中的单例模式
- java中的单例模式
- java中的单例模式
- Java中的单例模式
- java中的单例模式
- 2017最酷的 30 个 Android 库
- 67 个拯救前端开发者的工具、库和资源
- apache重写
- 搭建sceureCRT与虚拟机vm的环境三种方式很全面
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(三) logstash input output 配置
- java中的单例模式
- 第二周项目1
- 区间最小数-LintCode
- ERROR_SAMBA
- Lucene学习总结之七:Lucene搜索过程解析(8)
- Android 系统提示对话框(AlertDialog)的使用
- SCUT Training 20170913 Problem H
- Check Point R80 Security Management
- 各hbase版本对hadoop各版本的支持情况