Java枚举实现单例模式
来源:互联网 发布:面板数据的固定效应 编辑:程序博客网 时间:2024/05/16 08:53
单例模式约束一个类只能实例化一个对象。在Java中,为了强制只实例化一个对象,最好的方法是使用一个枚举量。这个优秀的思想直接源于Joshua Bloch的《Effective Java》(《Java高效编程指南》)。如果你的藏书室里还没有这本书,请搞一本,它是迄今为止最优秀的Java书籍之一。
这里有几个原因关于为什么在Java中宁愿使用一个枚举量来实现单例模式:
1、 自由序列化;
2、 保证只有一个实例(即使使用反射机制也无法多次实例化一个枚举量);
3、 线程安全;
/** * Example of a Java Singleton. * It is suggested to use an enum as a singleton. The Class * cannot be instantiated more then once, specifically when * using reflection. * * @author keaplogik */public enum AnimalHelperSingleton { INSTANCE; private AnimalHelperSingleton(){ } public Animal[] buildAnimalList(){ final Animal[] animals = new Animal[10]; animals[0] = new SimpleAnimal(Animal.AnimalClass.MAMMAL, "Dog", true, Color.GRAY); animals[1] = new SimpleAnimal(Animal.AnimalClass.MAMMAL, "Cat", true, Color.YELLOW); animals[2] = new SimpleAnimal(Animal.AnimalClass.AMPHIBIAN, "Frog", true, Color.GREEN); animals[3] = new SimpleAnimal(Animal.AnimalClass.BIRD, "Crow", true, Color.BLACK); animals[4] = new SimpleAnimal(Animal.AnimalClass.BIRD, "Cardinal", true, Color.RED); animals[5] = new SimpleAnimal(Animal.AnimalClass.ARTHROPOD, "Mantis", false, Color.GREEN); animals[6] = new SimpleAnimal(Animal.AnimalClass.ARTHROPOD, "Spider", false, Color.ORANGE); animals[7] = new SimpleAnimal(Animal.AnimalClass.MAMMAL, "Tiger", true, Color.ORANGE); animals[8] = new SimpleAnimal(Animal.AnimalClass.MAMMAL, "Bear", true, Color.BLACK); animals[9] = new SimpleAnimal(Animal.AnimalClass.BIRD, "Owl", true, Color.BLACK); return animals; }}如何使用:
//Call singleton to build the animal list.Animal[] animals = AnimalHelperSingleton.INSTANCE.buildAnimalList();
关于单列模式的使用,请不要过分地使用它们,但是当你需要使用的时候,使用枚举量是最佳的方法。你可以从我发布在github上的Java Design Conceptsrepo库中获取其他相关代码。
同时本文也和策略模式(StrategyPattern)一文相关。
原文链接
本文产生于个人工作学习笔记,转载请注明出处http://blog.csdn.net/horace20 4 2
- Java枚举实现单例模式
- Java 利用枚举实现单例模式
- java中枚举实现单例模式
- Java 利用枚举实现单例模式
- Java枚举实现单例模式
- Java枚举实现单例模式
- Java 利用枚举实现单例模式
- Java 利用枚举实现单例模式
- Java枚举使用以及枚举实现单例模式
- Java枚举enum以及应用:枚举实现单例模式
- Java枚举enum以及应用:枚举实现单例模式
- JAVA枚举单例模式
- 单例模式实现:枚举单例
- java中用枚举类实现单例模式
- 为什么java中用枚举实现单例模式会更好
- Java 枚举实现单例
- 单例模式(枚举实现)
- 枚举实现的单例模式
- IOS开发中常用的宏定义
- R.java was modified manually! Reverting to generated version!(R文件丢失异常原因汇总)
- 最长回文子串
- NYOJ 180 挑剔的小杜
- 在Ubuntu 11.04 下面,Mplayer安装
- Java枚举实现单例模式
- cs61a课程总结--lecture7 递归(和一种数据结构)
- 查找增强的方法
- Javascript使div旋转倾斜 Matrix
- POJ2996--Help Me with the Game(模拟题)
- hibernate学习之Hibernate API
- 折腾开源WRT的AC无线路由之路-2
- STM32F4读写内部FLASH【使用库函数】
- visio中制作的图粘贴到word中再裁剪边缘的方法