用枚举实现单例,方法简单、安全。值得学习
enum Singleton {
RED(255, 0, 0), GREEN(0, 255, 0), BLUE(0, 0, 255);
// 构造枚举值
Singleton(int rv, int gv, int bv) {
this.redValue = rv;
this.greenValue = gv;
this.blueValue = bv;
}
// 自定义数据域,private为了封装。
private int redValue;
private int greenValue;
private int blueValue;
public int getRedValue() {
return redValue;
}
public void setRedValue(int redValue) {
this.redValue = redValue;
}
public int getGreenValue() {
return greenValue;
}
public void setGreenValue(int greenValue) {
this.greenValue = greenValue;
}
public int getBlueValue() {
return blueValue;
}
public void setBlueValue(int blueValue) {
this.blueValue = blueValue;
}
}
public class Demo {
public static void main(String[] args) {
System.out.println(Singleton.RED.getRedValue());
}
}
分享到:
相关推荐
主要实现了枚举类创建单例后,将结果返回给前端。 看过一些其他人的实现,都比较麻烦。这是结合一些博主的代码,摸索出来的比较方便的方案。 缺点就是 多线程下会不会有 问题,期待大神的回复。
为了解决这个问题,Java引入了枚举类型来实现单例模式,这是一种简洁且线程安全的方法。 枚举在Java中是特殊的类,由JVM自动管理,保证了线程安全。当枚举类被加载时,JVM会自动初始化所有的枚举实例,因此在多线程...
而使用枚举实现单例模式则能确保线程安全,且避免了序列化问题,是Java推荐的一种实现方式。 ```java public enum Singleton { INSTANCE; private Properties properties; private Singleton() { // 加载配置...
JAVA 枚举单例模式是一种特殊的单例模式实现方式,它使用枚举类型来保证线程安全、防止序列化问题和反射攻击。下面我们将详细解释这个模式的实现原理和源码分析。 线程安全 在 Java 中,枚举类型的实例是在类加载...
Java中的枚举类型是线程安全的,并且只会装载一次,设计者充分考虑到了线程安全问题,因此使用枚举实现单例模式是一种简洁而且高效的解决方案。 6. 容器式单例(Singleton Holder) 通过一个私有的静态内部类...
2.1和2.2节介绍了两种使用枚举实现单例模式的方式。单例模式确保一个类只有一个实例,并提供全局访问点。在Java中,通过枚举实现单例非常安全且简单。在2.1节的`Singleton`中,枚举本身保证了只有一个`INSTANCE`,...
《Effective Java》和《Java 与模式》等书籍推荐使用枚举实现单例,因为它们提供了一种天然的防篡改机制,保证了在任何情况下都只有一个实例。 5. **枚举的优势**: - **安全性**:枚举对象是不可变的,防止了意外...
使用Java枚举实现单例,这是Effective Java作者Joshua Bloch推荐的方式,它既简单又安全,还防止了反序列化重新创建新的实例。 ```java public enum Singleton { INSTANCE; public void whateverMethod() { } ...
6. 枚举型单例:JDK 1.5以后,推荐使用枚举实现单例,既简单又安全,还能防止反序列化重新创建新的实例。 ```java public enum Singleton { INSTANCE; public void whateverMethod() { //... } } ``` 7. 非...
这里我们将重点讨论静态内部类和枚举实现单例的过程。 首先,让我们来看看静态内部类实现单例的方式: ```java public class SingletonFactory { private SingletonFactory() {} // 私有化构造函数,防止外部实例...
使用枚举实现单例模式时,Java虚拟机会保证枚举类型中的字段只被实例化一次。 在Java的单例模式实现中,内部类也是一个不错的选择。利用Java的类加载机制,可以实现一个线程安全的懒汉式单例。具体做法是将单例类的...
**枚举实现单例**: 这是Joshua Bloch在《Effective Java》中推荐的方法,枚举的实例化是线程安全的,并且自动防止了反射和序列化攻击。 每种模式都有其适用场景,例如,如果对性能和内存占用非常敏感,可以考虑...
枚举实现单例模式static修饰下是怎么做到线程安全的?完全不使用synchronized实现单例模式1. CAS(AtomicReference)实现单例模式2. ThreadLocal实现单例模式如何破坏单例如何防止单例被破坏参考文章 单例模式有...
`SingleInstance4.java`可能是枚举单例的实现。枚举天生就是线程安全的,无法被反射或序列化破坏。 ```java public enum SingleInstance4 { INSTANCE; public void singletonMethod() { // ... } } ``` 5. ...
单例模式是一种设计模式,它的核心目标是确保一个类在整个应用程序的生命周期中只存在一个实例,并且这个实例可以被全局访问。在Java编程中,单例模式常用于控制...同时,Java枚举实现单例是一种既简单又安全的选择。
在Java中,实现单例模式有多种方法,每种都有其特定的优缺点和适用场景。以下是几种常见的单例模式实现方式: 1. **饿汉式(静态常量)**: 这是最简单的实现方式,它在类加载时就完成了初始化,因此是线程安全的...
使用枚举实现单例模式是最简洁且线程安全的方式,同时还能防止反序列化导致的多实例问题。 ```java public enum Singleton { INSTANCE; public void whateverMethod() { // ... } } ``` 在选择单例模式的...
除了以上三种经典的实现方式,Java 1.5之后引入了枚举类型,也提供了一种更简洁且线程安全的单例实现方式。通过定义一个枚举类,其中包含一个枚举常量,这个枚举常量即为单例实例。这种方式既保证了线程安全,又避免...