java单例模式枚举式代码
时间: 2023-11-28 21:43:15 浏览: 96
以下是Java单例模式枚举式的代码:
```java
public enum Singleton {
INSTANCE;
public void testMethod() {
System.out.println("执行了单例类的方法");
}
}
```
使用方法:
```java
Singleton.INSTANCE.testMethod();
```
输出结果:
```
执行了单例类的方法
```
这种方式实现的单例模式具有线程安全、防止反序列化和反射破坏单例等优点,是一种比较常用的单例模式实现方式。
相关问题
java枚举单例模式代码
下面是Java枚举单例模式的代码:
```java
public enum Singleton {
INSTANCE;
public void testMethod() {
System.out.println("执行了单例类的方法");
}
}
```
使用枚举实现单例模式的好处是,枚举类只会被加载一次,保证了线程安全和单例的唯一性。同时,枚举类也可以防止反序列化和反射破坏单例。
要使用这个单例类,只需要调用`Singleton.INSTANCE`即可,这个实例是全局唯一的。例如:
```java
Singleton.INSTANCE.testMethod();
System.out.println(Singleton.INSTANCE);
```
这段代码会输出“执行了单例类的方法”和“INSTANCE”。
java单例模式的优缺点
Java单例模式的优缺点是:
优点:
- 可以保证一个类只有一个实例。
- 提供对唯一实例的受控访问。
- 避免对共享资源的多重访问。
- 在需要的时候,延迟初始化。
缺点:
- 可能会因为私有构造函数或者反射机制导致单例失效。
- 如果单例实例持有数据状态,则可能因为多线程访问导致数据不一致。
- 单例不支持继承。
- 通过单例获取全局状态可能会导致代码复杂性增加。
饿汉式单例和枚举单例都是 Java 单例模式的实现方式之一:
- 饿汉式单例的优点是线程安全,缺点是没有实现懒加载,如果一直没有用到该实例就会一直占用内存。
- 枚举单例的优点是实现简单,线程安全,支持序列化,支持反射攻击,避免了懒加载和反序列化时重新创建新对象的问题。缺点是不支持延迟加载。
代码演示:
1.饿汉式单例
```java
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
```
2.枚举单例
```java
public enum Singleton {
INSTANCE;
public void doSomething() {
//...
}
}
```
阅读全文