static 静态块__单例(单态)设计模式

来源:互联网 发布:大数据查询引擎 编辑:程序博客网 时间:2024/05/02 00:23
在MyEclipse中创建一个工程,添加Hibernate支持后,工程中会自动的添加两个文件:一个是hibernate.cfg.xml;另一个是HibernateSessionFactory.java。
刚开始学Hibernate,由于我们老师讲的听不懂,所以听王勇大师的视频。全部手敲,自己配置文件。视频中提到了HibernateUtils.java这个文件,和自动生成的HibernateSessionFactory.java内容基本一致,但从来没用过这个文件。
今天调用的时候不能new()创建实例。原来里边的构造方法是private,外部不能调用。可以写类名加方法名直接调用;如果自己写的话可以在类内部创建实例,在外部调用创建实例的方法。
HibernateSessionFactory.java 中还有一个static 静态块,不知道这个块是怎么执行的。在网上搜“static”找不到,又听了遍王大师的视频,发现应该叫做‘static块’。
那么,static 块是什么时候运行的呢?
 
* 一个类的运行,JVM做会以下几件事情 1、类装载 2、链接 3、初始化 4、实例化;而初始化阶段做的事情是初始化静态变量和执行静态方法等的工作。所以在调用类HibernateSessionFactory.java初始化的时候就调用了static块。
为什么要用static块,还要把构造函数写成private?
 
这就是单例(态)模式。能够确保整个程序中同一时间只能有一个class的实例存在,这有涉及到了单线程和多线程,还有垃圾处理等。