JAVA中,我们NEW一个对象就称实例化一个对象,单例模式就是只实例化出某个类的一个对象。这样可以节省资源,不必每次总实例化新的对象,只需要将获取原先实例化的对象即可。
单例模式又分为懒汉式单例模式和饿汉式。分类的根据是实例化对象的时机不同。只有当调用getInstance()方法时才实例化对象,叫懒汉式。(顾名思义,比较懒吗。只有你调用方法时才产生对象^_^)。饿汉式就是先实例化对象,等你调用方法时直接获取已经产生的对象。在程序中可以根据对象的使用情况,选择不同的模式。当暂时用不到此对象而此对象的实例化占用资源较大时,建议用懒汉式。相反,则用饿汉式。JAVA中DateFormate就用到了单例模式。
例子1:懒汉式
public class LazyManSingleton {
private LazyManSingleton (){}
private static LazyManSingleton instance = null;
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static synchronized LazyManSingleton getInstance() {
if (instance==null){
instance = new LazyManSingleton ();
}
}
}
例子1:饿汉式
public class HungryManSingleton {
private HungryManSingleton (){}
private static HungryManSingleton instance = new HungryManSingleton ();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static HungryManSingleton getInstance() {
return instance;
}
}