JAVA单例模式(Single)——饿汉式、懒汉式
- 饿汉式:
/**
* Title: Single.java
* Description: 单例模式:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”
* 唯一性:不允许其他程序用new创建对象(构造函数私有化),只需要在本类中创建一个实例,对外提供一个方法可以访问本类内部信息
*
* @author sunt
* @created 2016年5月3日 上午11:52:54
*/
public class Single {
/**
* 饿汉式:首先new一个本类对象
*/
private static Single single = new Single();
/**
* 构造函数私有化
*/
private Single() {
}
/**
* 创建一个公共的方法,外部访问
*/
public static Single getSingleInfo(){
return single;
}
}
1. 饿汉式测试类:
/**
* Title: SingleTest.java
* Description: 单例模式饿汉式测试
* @author sunt
* @created 2016年5月3日 下午12:03:22
*/
public class SingleTest {
public static void main(String[] args) {
Single singleInfo = Single.getSingleInfo();
Single singleInfo2 = Single.getSingleInfo();
System.out.println(singleInfo == singleInfo2);
}
}
- 懒汉式:
/**
* Title: Single2.java
* Description: 懒汉式
* 类加载的时候不创建对象,什么时候需要对象,再进行创建对象
* @author sunt
* @created 2016年5月3日 下午12:05:40
*/
public class Single2 {
private static Single2 single2 = null;
/**
* 私有的构造
*/
public Single2() {
}
/**
* 公共的方法,便于外界访问
*/
public static Single2 getInfo(){
if(single2 == null){
single2 = new Single2();
}
return single2;
}
}
- 懒汉式测试代码:
/**
* Title: Single2Test.java
* Description: 单例模式——懒汉式测试
* @author sunt
* @created 2016年5月3日 下午2:15:20
*/
public class Single2Test {
public static void main(String[] args) {
/**
* 通过类名直接调用公共方法
*/
Single2 info = Single2.getInfo();
Single2 info2 = Single2.getInfo();
System.out.println(info == info2);
}
}