博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java设计模式 单例模式
阅读量:4101 次
发布时间:2019-05-25

本文共 1087 字,大约阅读时间需要 3 分钟。

单例模式

单例模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

意图:单例类必须自己创建自己的唯一实例,并必须提供一个访问它的全局访问点。

主要解决:一个全局使用的类频繁地创建与销毁。

何时使用:当您想控制实例数目,节省系统资源的时候。

如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。

关键代码:构造函数是私有的!!!

 

1、经典的手撕单例——懒汉式(调用时初始化对象)

public class Singleton {

    private static Singleton instance=null;

    //所以该类无法被实例化,也就是new出来

    private Singleton() { }

    //既然无法在外部被实例化,那么我们就必须在内部实例化,然后提供一个公有的方法将该实例返回

    public static Singleton getInstance(){
        if(instance==null){
            instance=new Singleton();
        }
        return instance;
    }
}

2、饿汉式 (类加载时就初始化对象)

private static Singleton instance=new Sington();

 

3、线程安全的懒汉式(在getInstance方法上加同步锁)

public static synchronized Singleton getInstance(){.....}

 

4、线程安全的双重校验锁(在getInstance方法内嵌套判断是否实例化)

双重校验锁先判断 Instance 是否已经被实例化,如果没有被实例化,那么才对实例化语句进行加锁。

public static synchronized Singleton getInstance(){

if (uniqueInstance == null) {            synchronized (Singleton.class) {
if (uniqueInstance == null) { uniqueInstance = new Singleton(); } } } return uniqueInstance;}

 

 

 

转载地址:http://srzsi.baihongyu.com/

你可能感兴趣的文章
python __future__
查看>>
MySQL Tricks1
查看>>
python 变量作用域问题(经典坑)
查看>>
pytorch
查看>>
pytorch(二)
查看>>
pytorch(三)
查看>>
pytorch(四)
查看>>
pytorch(5)
查看>>
pytorch(6)
查看>>
opencv 指定版本下载
查看>>
ubuntu相关
查看>>
C++ 调用json
查看>>
nano中设置脚本开机自启动
查看>>
动态库调动态库
查看>>
Kubernetes集群搭建之CNI-Flanneld部署篇
查看>>
k8s web终端连接工具
查看>>
手绘VS码绘(一):静态图绘制(码绘使用P5.js)
查看>>
手绘VS码绘(二):动态图绘制(码绘使用Processing)
查看>>
基于P5.js的“绘画系统”
查看>>
《达芬奇的人生密码》观后感
查看>>