欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

设计模式(五)--单例模式

程序员文章站 2022-05-17 18:53:42
...

 

单例模式:确保一个类只有一个实例,并提供一个全局访问点

 

单例有两种方法:1延迟加载,2非延迟加载

 

package com.em.singleton;

/**
 * Created by Administrator on 2017/12/23.
 */
public class Singleton {

    /*
    * 必须是私有构造方法
    * */
    private  Singleton(){}


    /**
     *
     * 非延迟加载
     * **/
    private static Singleton singleton1 = new Singleton();


    public static Singleton getInstance1(){
        return singleton1;
    }

    /**
     * 延迟加载
     *
     * **/
    private static volatile Singleton singleton;    //volatile 多线程情况下保证内存可见性

    public static Singleton getInstance(){
        if(singleton ==null){
            synchronized (Singleton.class){ //双重加锁,防止多线程同时访问
                if(singleton==null){
                    singleton = new Singleton();
                    return singleton;
                }
            }
        }
        return singleton;
    }
}