java枚举和单例模式

问题描述

我是一个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中只会存在唯一的一份
解决方案七:
刚体会到了,是单例。

时间: 2024-07-29 11:36:00

java枚举和单例模式的相关文章

Java枚举的反向查找

java的枚举常常被用来替代常量值,每个枚举值代表一个特定的常数. 在反序列化时有常常需要用到常数到枚举的转换,这就涉及到枚举的反向查找. 1.从枚举名反向查找枚举 这种方法是最先使用也最为简便的 可以用到枚举的静态方法valueOf(String name) valueOf方法为内置方法,使用简便,但在查找不到枚举时会抛出异常. 熟悉异常的同学可能知道异常抛出时,需要收集虚拟机的调用堆栈上下文信息,对性能影响较大. 使用时,常常需要使用这么一个反序列化查找方法 E find(String na

Java枚举类用法实例

  本文实例讲述了Java枚举类用法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 package com.school.stereotype; /** * 活动枚举类型 * @

源代码-JAVA枚举类定义中泛型的使用

问题描述 JAVA枚举类定义中泛型的使用 在枚举类的源代码中,有这样的定义:Enum > 在网上看了很多人的文章都没有看懂,请能够解释清楚的大神帮忙说说.E extends Enum到底有什么用? 为什么要这么写? 解决方案 E这个类继承了Enum,也就是E也是个枚举类型

Java枚举的七种常见用法总结(必看)_java

用法一:常量 在JDK1.5之前,我们定义常量都是:publicstaticfianl.....现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. Java代码 public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强. Java代码 enum Signal { GREEN, YELLOW,

Java枚举(enum) 详解7种常见的用法_java

JDK1.5引入了新的类型--枚举.在 Java 中它虽然算个"小"功能,却给我的开发带来了"大"方便.  用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int

java两种单例模式用法分析_java

本文实例讲述了java两种单例模式用法.分享给大家供大家参考,具体如下: 按照加载方式的不同,单例模式有两种实现: private:只能在同一个类中使用 static:该类是类方法,不能调用实例方法./类全局变量 final:方法或成员变量不能被修饰 1.饿汉式 public class EagerSigleton{ private static final EagerSigleton instance=new EagerSigleton(); private EagerSigleton(){}

Java枚举类enum介绍_java

枚举类enum是JDK1.5引入的,之前都是用public static final int enum_value来代替枚举类的.枚举类enum是一种特殊的类,它默认继承了类java.lang.Enum.和其它普通类一样,enum同样可以有成员变量.方法.构造器,也可以实现一个或多个接口,区别是: 1.如果有构造器,必须用private修饰. 2.枚举类不能派生子类. 3.枚举类所有的实例必须在第一行显示定义.系统会自动给这些实例加上public static final修饰,无须程序员显示定义

Java枚举详解及使用实例(涵盖了所有典型用法)_java

在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的"数据集",春夏秋冬四个数据元素组成了四季的"数据集". 在java中如何更好的使用这些"数据集"呢?因此枚举便派上了用场,以下代码详细介绍了枚举的用法. package com.ljq.test; /** * 枚举用法详解 * * @author jiqinli

C++和java设计模式之单例模式_C 语言

单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点.其构造过程由自身完成,可以将构造方法定义为private型的,这样外界就只能通过定义的静态的函数Instance()构造实例,这个函数的目的就是返回一个类的实例,在此方法中去做是否有实例化的判断.客户端不再考虑是否需要去实例化的问题,把这些都交给了单例类自身.通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象.一个最好的办法,就是让类自身负责保存它的唯一实例.这个类可以保证没有其他实例可