public class SingleInstanceDemo {
/**
* 单例模式巩固:
* 饥汉/饿汉式:
* 对象默认的时候是没有被创建好的。只有第一次调用的时候才会创建
* 然后返回。如果下次调用的时候,这个对象是存在的,就直接返回
*
* 饱汉式:
* 对象已经创建好,在返回实例的方法中直接返回
* 不管是否有人调用对象都是已经创建好的。
*/
public static void main(String[] args) {
//静态的方法里面只能静态的成员变量
//静态的方法可以不用创建对象就直接调用。
//测试饱汉式
MyTest mt1=MyTest.getInstance();
System.out.println(mt1.getClass().getName());
/**
* cn.itcast.thread.SingleInstanceDemo$MyTest
*/
// 测试饥汉式
MyTest3 mt3=MyTest3.getInstance();
System.out.println(mt3.getClass().getName());
/**
* cn.itcast.thread.MyTest3
*/
}
//如果方法是静态的,类是内部类,类一定要使用static修饰
static class MyTest{
private MyTest(){} //私有化构造方法
//别人不能创建对象我们可以自己创建一个然后使用公共的方法返回创建的对象的实例
//即自己创建一个对象实例,使用提供的公共的方法别别人可以获取到这个实例
public static MyTest getInstance(){ //这个方法是静态的
return instance; //静态方法只能调用静态的成员变量
}
//使用饱汉式
private static MyTest instance=new MyTest(); //创建对象实例
//不管对象被不被人调用对象都是存在的
}
}
class MyTest3{ //static只能修饰内部类
private MyTest3(){}
public static MyTest3 getInstance(){
if(instance==null){
instance=new MyTest3(); //只在第一次时候创建
}
return instance; //然后返回
}
private static MyTest3 instance=null; //默认的时候为空
}原文:http://blog.csdn.net/zhizguoz/article/details/22503803