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

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


2024年1月13日发(作者:)

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

}

}

以上就是常见的创建单例模式的四种方法。每一种方法都有自己的优点和缺点,应该根据实际情况选择最合适的方法来创建单例。


发布者:admin,转转请注明出处:http://www.yc00.com/news/1705128412a1394825.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信