黑马程序员技术交流社区

标题: 怎样用枚举实现单例设计模式? [打印本页]

作者: ccyznhy    时间: 2013-8-22 22:50
标题: 怎样用枚举实现单例设计模式?
求各路大虾指点?
作者: 吴光新    时间: 2013-8-23 02:33
问题最好具体一点,不要提这样抽象的问题,这样是没有分加的
作者: 黑马-文鸿利    时间: 2013-8-23 06:54
public class Singleton {  
    private Singleton() {}  
  
    private static final class  Holder {  
        static final Singleton instance = new Singleton();  
    }  
  
    public static Singleton getInstance() {  
        return Holder.instance;  
    }  
}  


这样写不仅达到了单例的效果,而且还是延迟加载
作者: 耶稣说wō乖    时间: 2013-8-23 10:11
单例的三要素:
1.将构造函数私有化。
2.在类中创建一个本类对象,并私有化。
3.向外提供一个公有方法来获取该对象。

Java枚举类是从Java5开始支持的。

枚举类的构造方法是用private修饰的。
枚举类的所有实例写在类的第一行,这时枚举类就会自动产生实例的对象。
这些实例都是public static void,可以被外界类名.对象直接调用。

因此
当枚举只有一个成员的时候,就可以作为一种单例的实现方式。
另外网上看到有人说enum获得的单例是最安全的,懒汉式和饿汉式的单例都可以用反射得到。
实现代码:
  1. public enum Singleton {   
  2.       INSTANCE {   
  3.             public void someMethod() {   
  4.             // . . .   
  5.        }   
  6.     };   

  7.     protected abstract void someMethod();   
  8. }  
复制代码

作者: ccyznhy    时间: 2013-8-23 10:18
。。。还是没有技术分,多谢指点!其实这道题我也会。。。
作者: 黄兴旺    时间: 2013-8-23 16:50
亲  如果问题已解决请把类别改为已解决,谢谢。




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