A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余勇 中级黑马   /  2013-3-4 14:25  /  1568 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 余勇 于 2013-3-4 14:49 编辑

今天看到高新技术里,张老师讲到枚举,枚举成员只有一个的时候也可以实现单例模式,不太确定,求解?
public enum Applet {
        APPLET
}

2 个回复

倒序浏览
你要把枚举的构造函数私有,让外边建不了对象。这样枚举的对象就只有一个了,就是枚举里面的唯一元素。
其实和前面的单例差不多意思。
回复 使用道具 举报
单例的特征应该是类的构造方法私有,类中保证只有一个实例对象。不允许外部创建新的实例对象,给出方法能让外部获得类中唯一的实例对象。一般方法都是静态的。
  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. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马