介绍常见的对象初始化方式
一、饿汉式:
介绍:类加载时就完成对象的初始化。
示例代码:
public class HungryMan {
private static final Object object = new Object();
public static Object getObject() {
return object;
}
}
区别和适用场景:
区别:饿汉式在类加载时就创建了对象,无论是否使用都会占用资源。
适用场景:对象创建成本较低,或者在程序运行中始终需要该对象。
二、懒汉式
介绍:初始化对象是指在单例模式中,对象在第一次被使用时才进行初始化。
示例代码:
public class LazySingleton {
private static LazySingleton instance;
private LazySingleton() {}
public static LazySingleton getInstance() {
if (instance == null) {
instance = new LazySingleton();
}
return instance;
}
}
区别和适用场景:
区别:
在类加载时不初始化对象,只有在首次调用 getInstance() 方法时才创建实例,节省了资源。
可能存在多线程并发问题,需要进行线程安全的处理。
适用场景:
对象的创建开销较大。
不需要在程序启动时就立即创建对象。
三、静态工厂方法:
介绍:通过静态方法来创建对象。
示例代码:
public class StaticFactory {
public static Object createObject() {
return new Object();
}
}
区别和适用场景:
区别:提供了更大的灵活性,可以根据不同的条件创建不同的对象。
适用场景:当创建对象的过程需要一些逻辑判断或参数时。
四、单例模式:
介绍:确保一个类只有一个实例。
示例代码(懒汉式单例模式):
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
区别和适用场景:
区别:单例模式保证了类只有一个实例,并且可以根据需求选择饿汉式或懒汉式实现。
适用场景:只需要一个对象实例的场景,如系统配置、共享资源等。