单例模式

单例模式

DCL懒汉式

public class LazyMode {
    private static volatile LazyMode LAZYMODE;
    private LazyMode(){
    }
    public static LazyMode getInstance(){
        if(LAZYMODE==null){
            synchronized (LazyMode.class){
                if(LAZYMODE==null){
                    LAZYMODE = new LazyMode();
                }
            }
        }
        return LAZYMODE;
    }
    public static void main(String[] args) {
        LazyMode.getInstance();
    }
}

以上这种模式并不能防止通过反射来创建对象。

如何解决呢?可以采用枚举

public enum SingleEnum {
    SINGLE_ENUM;
    public static SingleEnum getInstance(){
        return SINGLE_ENUM;
    }

    public static void main(String[] args) {
        SingleEnum.getInstance();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文章采用循序渐进的方式对单例模式进行演化实现。 什么是单例模式,为什么要使用单例模式? 单例模式就是只允许创建一...
    帅气滴糟老头阅读 1,631评论 0 2
  • 单元素的枚举类型经常成为实现 Singleton 的最佳方法 。 什么是单例?就一条基本原则,单例对象的类只会被初...
    闲庭阅读 3,641评论 0 7
  • 单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属...
    thorhill阅读 5,626评论 3 4
  • 单例模式(SingletonPattern)一般被认为是最简单、最易理解的设计模式,也因为它的简洁易懂,是项目中最...
    成热了阅读 9,854评论 4 34
  • 前言 本文主要参考 那些年,我们一起写过的“单例模式”。 何为单例模式? 顾名思义,单例模式就是保证一个类仅有一个...
    tandeneck阅读 7,241评论 1 8