admin 管理员组

文章数量: 1086019


2024年4月15日发(作者:12315免费法律咨询)

java 创建单例模式的几种方式

单例模式是一种常见的设计模式,它保证在整个应用程序中只有

一个特定的实例被创建并且只能访问它。

Java中有许多种创建单例模式的方法。

第一种创建单例模式的方法:使用静态变量

这是最常用的方法之一。创建一个私有的、静态的单例实例变量,

在类的构造函数中,确保只创建一个实例。然后,为了访问这个单例,

可以使用一个公共的静态方法getInstance()。当getInstance()被

调用的时候,返回单例实例。

代码如下:

public class Singleton {

private static Singleton instance = new Singleton();

private Singleton() {}

public static Singleton getInstance() {

return instance;

}

}

第二种创建单例模式的方法:使用双重检查锁定

在第一种方法中,即使实例已经创建,getInstance()方法每次

都要锁定静态的实例对象,这会影响程序的性能。因此,使用双重检

查锁定,在第一次创建实例的时候加上同步锁,以后就不需要再加锁

了。

代码如下:

public class Singleton {

private static volatile Singleton instance;

private Singleton() {}

public static Singleton getInstance() {

if(instance == null) {

synchronized() {

if(instance == null) {

instance = new Singleton();

}

}

}

return instance;

}

}

第三种创建单例模式的方法:使用静态内部类

这种方法也是一种常见的方法,并且也是线程安全的。它使用了

Java的类加载机制,只有在需要使用单例的时候才会加载内部类,并

创建实例。这种方法不需要使用synchronized,所以效率更高。

代码如下:

public class Singleton {

private Singleton() {}

private static class SingletonInstance {

private static final Singleton instance = new

Singleton();

}

public static Singleton getInstance() {

return ce;

}

}

第四种创建单例模式的方法:使用枚举

这种方法也是线程安全的,并且可以避免反序列化导致的新实例

创建。枚举的构造函数只会被加载一次,所以这个实例也只会创建一

次。

代码如下:

public enum Singleton {

INSTANCE;

public void doSomething() {

//do something

}

}

以上就是常见的创建单例模式的四种方法。每一种方法都有自己的优

点和缺点,应该根据实际情况选择最合适的方法来创建单例。


本文标签: 方法 创建 单例 实例 使用