问题描述
我是一个java新手,想来请教各位大神一个问题:在java中单例模式的做法步骤大致可以理解为:1.创建私有构造函数;2.在类内部给该类创建一个静态的私有实例;3.用一个共有的方法返回这个实例;这样做的好处是外部方法不能实例化这个类,但是可以直接调用这个类返回的那个实例,直接使得用户只能对一个基于该类的实例进行操作。对于单元素的enum类,是不是也可以理解成为一个单例模式呢?如果声明一个enum类并且假设定义该类只有一个枚举元素,那么这个类和单例模式的区别是什么?多谢大神的回复
解决方案
解决方案二:
枚举研究不深。感觉枚举更像一个类内声明的publicstaticfinalint的常量,这种常量可以声明多个,但是一旦定义了就不可修改。
解决方案三:
去读读《effectivejava》第二版,关于用枚举实现单例类那章
解决方案四:
没有区别,枚举就是实现单例的相当好的方式
解决方案五:
枚举和单例是不同的两个东西。他们的区别是,枚举相当于一套static常量,带有少量逻辑。单例的作用是,一次初始化后,在对象生命周期结束前一直保持二者表面上都有持久的功能,但单例注重持久化,就好比DB链接,server链接等等。还有一些设计模式tableMapping等也使用单例模式。还有,你说的单例模式我给你补充一下。1、单例模式还要有synchronize表示,synchronize(this)。2、单例模式分很多种,也分懒汉和饿汉,但饿汉模式的写法,在多核CPU的环境中,因为JAVA的无序写,写法已经改变了。最好的解决方式,用JDK1.5的volatile修饰单例对象。3、懒汉模式无影响,推荐使用。
解决方案六:
java核心技术卷中有提到枚举是实现单例的最好方式。他在jvm中只会存在唯一的一份
解决方案七:
刚体会到了,是单例。