/**
* 单例模式,通常单例模式在Java语言中,有两种构建方式:
* 懒汉方式:指全局的单例实例在第一次被使用时构建。
* 饿汉方式:指全局的单例实例在类装载时构建。
* @author xw
*/
public class Single {
//懒汉模式
private static Single instance = null;
/**
* 私有的默认构造子,保证外界无法直接实例化
*/
private Single(){
System.out.println("Single()");
}
/**
* 静态工厂方法,返还此类的惟一实例
*/
synchronized public static Single getInstance()
{
if (instance == null)
{
instance = new Single();
}
System.out.println("getInstance()");
return instance;
}
//饿汉模式
private static final Single instance = new Single();
/**
* 私有的默认构造子,保证外界无法直接实例化
*/
private Single(){
System.out.println("Single()");
}
public static Single getInstance(){
System.out.println("getInstance");
return instance;
}
public static void main(String[] args) {
System.out.println("========================================");
System.out.println("下面是使用单例模式,来调用类的实例");
System.out.println("========================================");
for(int i=0;i<6;i++){
int m=i+1;
System.out.println("第 "+m+" 次"+"得到的对象值为 "+Single.instance);
System.out.println("第 "+m+" 次"+"得到的对象值为 "+Single.getInstance());
}
}
}
1、懒汉方式:
========================================
下面是使用单例模式,来调用类的实例
========================================
第 1 次得到的对象值为 null
Single()
getInstance()
第 1 次得到的对象值为 Single@1f6a7b9
第 2 次得到的对象值为 Single@1f6a7b9
getInstance()
第 2 次得到的对象值为 Single@1f6a7b9
第 3 次得到的对象值为 Single@1f6a7b9
getInstance()
第 3 次得到的对象值为 Single@1f6a7b9
第 4 次得到的对象值为 Single@1f6a7b9
getInstance()
第 4 次得到的对象值为 Single@1f6a7b9
第 5 次得到的对象值为 Single@1f6a7b9
getInstance()
第 5 次得到的对象值为 Single@1f6a7b9
第 6 次得到的对象值为 Single@1f6a7b9
getInstance()
第 6 次得到的对象值为 Single@1f6a7b9
2、饿汉方式
Single()
========================================
下面是使用单例模式,来调用类的实例
========================================
第 1 次得到的对象值为 Single@1f6a7b9
getInstance
第 1 次得到的对象值为 Single@1f6a7b9
第 2 次得到的对象值为 Single@1f6a7b9
getInstance
第 2 次得到的对象值为 Single@1f6a7b9
第 3 次得到的对象值为 Single@1f6a7b9
getInstance
第 3 次得到的对象值为 Single@1f6a7b9
第 4 次得到的对象值为 Single@1f6a7b9
getInstance
第 4 次得到的对象值为 Single@1f6a7b9
第 5 次得到的对象值为 Single@1f6a7b9
getInstance
第 5 次得到的对象值为 Single@1f6a7b9
第 6 次得到的对象值为 Single@1f6a7b9
getInstance
第 6 次得到的对象值为 Single@1f6a7b9