Java中单例模式是一种常用的创建模式,用来限制一个类只能实例化一次。它是一种创建型设计模式,它提供了一种创建对象的最佳方式。
实现Java单例模式的方式有多种,以下是其中两种常见的实现方式:
- 使用静态变量实现单例模式:
public class Singleton{
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
这种方式使用一个私有的静态变量来保存单例实例,通过getInstance()方法来获取单例实例,如果instance为空,则创建一个实例并返回。
- 使用静态内部类实现单例模式:
public class Singleton{
private Singleton(){}
private static class SingletonHolder{
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance(){
return SingletonHolder.INSTANCE;
}
}
这种方式使用静态内部类来保存单例实例,当外部类被加载时,静态内部类不会被加载,只有调用getInstance()方法时才会加载静态内部类,从而实现懒加载的效果。在静态内部类中定义了一个private static final 的单例实例,外部类通过getInstance()方法获取单例实例。
Java中单例模式是一种常用的创建模式,用来限制一个类只能实例化一次。它是一种创建型设计模式,它提供了一种创建对象的最佳方式。
实现Java单例模式的方式有多种,以下是其中两种常见的实现方式:
- 使用静态变量实现单例模式:
public class Singleton{
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
这种方式使用一个私有的静态变量来保存单例实例,通过getInstance()方法来获取单例实例,如果instance为空,则创建一个实例并返回。
- 使用静态内部类实现单例模式:
public class Singleton{
private Singleton(){}
private static class SingletonHolder{
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance(){
return SingletonHolder.INSTANCE;
}
}
这种方式使用静态内部类来保存单例实例,当外部类被加载时,静态内部类不会被加载,只有调用getInstance()方法时才会加载静态内部类,从而实现懒加载的效果。在静态内部类中定义了一个private static final 的单例实例,外部类通过getInstance()方法获取单例实例。