枚举类 用来实现 单例模式 不会被破坏
如果不用枚举 普通类 的单例会被 序列化 和 反射 破坏掉
用法
单例模式
在有些系统中,为了节省内存资源、保证数据内容的一致性,对某些类要求只能创建一个实例,这就是所谓的单例模式。
servlet -controller 控制器 管理器 就是单例
单例设计思路:
构造器私有化
提供私有的静态成员变量
提供共有的静态方法
单例模式有2类
饿汉模式
懒汉模式
饿汉模式
/** * 单例设计 : * 1,饿汉模式 * 优点:线程安全的 * 缺点:提前占用了内存空间 ,特别对于大对象 * 2,懒汉模式 * 优点:内存使用率高 * 缺点:线程不安全,要使用线程同步 */ public class HungrySingleton implements Serializable { private static HungrySingleton instance = new HungrySingleton(); private HungrySingleton() { } public static HungrySingleton getInstance() { return instance; } }
懒汉模式
/** * 单例设计之懒汉模式 */ public class LazySingleton { private static LazySingleton instance; private LazySingleton() { } /** * 线程同步 * * @return */ public synchronized static LazySingleton getInstance() { if (instance == null) { instance = new LazySingleton(); } return instance; }
枚举的用法
/** * 枚举类型 * public class Color extends Enum * TimeUnit: */ public enum Color { // 一组常量对象(通常都是全大写)最后一个实例用分号 // 前面使用逗号隔开 YELLOW("黄色") { //进行方法重写 @Override public void paint() { System.out.println("使用黄色进行绘画"); } }, GREEN, RED(); private String name; //构造器都是私有的; private Color() { } private Color(String name) { this.name = name; } public String getName() { return name; } public void paint() { System.out.println("绘画颜色"); } public void setName(String name) { this.name = name; } }
版权声明:本文为m0_47760827原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。