Java设计模式——单例模式

单例模式有三个特点:

  1. 单例类只能有一个实例
  2. 单例类必须自己创建自己的唯一实例
  3. 单例类必须给其它对象提供这一实例

单例模式的用处:

  • 防止资源被多个请求同时调用(如打印机、通信端口等)
  • 存放配置信息,避免状态不一致

五种实现单例模式的方法:

1、饿汉式(先创建出实例):

class Singleton{
    //静态实例
    private static Singleton singleton = new Singleton();
    
    //构造函数
    private Singleton(){};
    
    public Singleton getInstance(){
        return singleton;
    }
}

2、懒汉式(需要时才创建实例):

class Singleton{
    private static Singleton singleton = null;
    
    public static synchronized Singleton getInstance(){
        if(null == singleton){
            singleton = new Singleton();
        }
        return singleton;
    }
}

3、枚举

enum Singleton{
    INSTANCE;  //枚举成员
    
    private Singleton singleton;
    
    private Singleton{
        singleton = new Singleton();
    }

    public Singleton getInstance(){
        return singleton;
    }
}

//获得实例:Singleton.INSTANCE.getInstance();

4、静态内部类:

class Singleton{
    //静态内部类
    private static calss SingletonHolder{
        private static final Singleton singleton = new Singleton();
    }
    
    //构造函数
    private Singleton(){};

    public static final Singleton getInstance(){
        return SingletonHolder.singleton;
    }
}

5、静态代码块

class Singleton{
    //静态变量
    private static Singleton singleton = null;
    
    //构造函数
    private Singleton(){};

    //静态代码块
    static{
        singleton = new Singleton();
    }

    public Singleton getInstance(){
        return singleton;
    }
}

欢迎关注我的微信公众号:


“学而有益”微信公众号
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java设计模式——单例模式 单例模式应该是大家最为熟知的一种设计模式了,相信大家或多或少的都在自己的项目中使用过...
    gogoingmonkey阅读 3,456评论 0 2
  • 概念 java中单例模式是一种常见的设计模式,单例模式的写法有好几种,比较常见的有:懒汉式单例、饿汉式单例。单例模...
    怡红快绿阅读 3,315评论 0 0
  • 引言 单例模式,顾名思义只有一个实例,该中设计模式主要应用的场景如下: 1.需要频繁实例化然后销毁的对象。...
    三分长手怪阅读 5,473评论 0 99
  • 核心作用: 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 常见应用场景: Windows的Task ...
    GaaraZ阅读 2,944评论 0 0
  • 这是昨天请人做的车身logo,构思是我的,但要做成矢量图,才可以最终打印在不干胶上,贴在车身上。本想在某宝上搞定,...
    敏于延时阅读 1,709评论 0 0