所谓单例模式就是在同包下,使其他类调用自身的时候通过私有化构造方法使其无法实例化多个对象,
具体是通过类属性(stastic)指向一个实例化对象,并且通过调用返回这个对象,
因为是静态的,所以只有在第一次调用的时候才真正的实例化了一个对象,其他多次调用的都是这一个对象。
----小白的理解,不对请留言
单例模式又分 饿汉式 和 懒汉式
饿汉式(它是无论如何都会实例化一个对象,即使你不调用这个方法)
package charactor;
public class GiantDragon {
private GiantDragon(){
//私有化构造方法,使外部无法通过new 创建新的实例
}
private static GiantDragon instance = new GiantDragon();
//类属性指向的实例化对象
public static GiantDragon getInstance(){
return instance;
//调用立即返回对象
}
}
package charactor;
public class TestGiantDragon {
public static void main(String[] args){
// TestGiantDragon g1 = new TestGiantDragon(); new 会报错
GiantDragon g = GiantDragon.getInstance();
GiantDragon g1 = GiantDragon.getInstance();
}
}
懒汉单例
与饿汉不一样的是,他会在调用之后在做一个判断,只有在调用这个方法的时候才会实例化对象,这在一定程度上节省了时间,
package charactor;
public class GiantDragon {
private GiantDragon(){
}
private static GiantDragon instance; //先指向null
public static GiantDragon getInstance(){
if (null == instance)
instance = new GiantDragon(); //在调用方法的时候才实例化,
return instance;
}
}
给大家推荐一个网址,学习java 巨好用 www.how2j