黑马程序员技术交流社区

标题: 求解关于枚举的单例模式如何实现 [打印本页]

作者: 余勇    时间: 2013-3-4 14:25
标题: 求解关于枚举的单例模式如何实现
本帖最后由 余勇 于 2013-3-4 14:49 编辑

今天看到高新技术里,张老师讲到枚举,枚举成员只有一个的时候也可以实现单例模式,不太确定,求解?
public enum Applet {
        APPLET
}
作者: lzw123451    时间: 2013-3-4 14:39
你要把枚举的构造函数私有,让外边建不了对象。这样枚举的对象就只有一个了,就是枚举里面的唯一元素。
其实和前面的单例差不多意思。
作者: 唐长智    时间: 2013-3-4 16:16
单例的特征应该是类的构造方法私有,类中保证只有一个实例对象。不允许外部创建新的实例对象,给出方法能让外部获得类中唯一的实例对象。一般方法都是静态的。
  1. class Test{
  2.         private Test(){
  3.                 //私有构造方法
  4.         }
  5.         private static Test t1 = new Test();
  6.        
  7.         public static Test getInstance(){
  8.                 return t1;
  9.              //通过方法返回实例
  10.         }
  11.        
  12. }
复制代码
而枚举类是不能创建新对象的,类中所有的元素都是静态的,所以如果一个枚举类只有一个元素的话。
这个枚举类只存在一个对象,并且外部不能在创建新的元素。完全符合单例设计模式的标准
  1. enum Test1{
  2.         Mon;
  3.         //有且只有一个实例对象,并且要通过静态调用Test1.Mon;
  4. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2