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
}
}
以上就是常见的创建单例模式的四种方法。每一种方法都有自己的优
点和缺点,应该根据实际情况选择最合适的方法来创建单例。
版权声明:本文标题:java 创建单例模式的几种方式 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1713112108a620447.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论