设计者模式之单例模式

版权声明:-万里晴空-祝你前途晴朗 https://blog.csdn.net/qq_35207917/article/details/83352689

定义:
一个类在程序运行过程中,有且仅有一个实例,并且这个类在程序运行过程中,可供整个程序使用。
作用:
节约资源,提高效率,有效避免了实例化多个对象时,造成的逻辑错误
实现要点:
显然单例模式的要点有三个:
    1. 是某个类只能有一个实例;
    2. 是它必须自行创建这个实例;
    3. 是它必须自行向整个系统提供这个实例。

从具体实现角度来说,就是以下三点:
    1. 是单例模式的类只提供私有的构造函数;
    2. 是类定义中含有一个该类的静态私有对象;
    3. 是该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。
单例模式的种类:目前我只知道三种

1.懒汉式:真正想用的时候创建这个对象

public class SingletonClass{
    private static SingletonClass instance=null;
    public static SingletonClass getInstance()
    {
        if(instance==null)
        {
            synchronized(SingletonClass.class)
            {
                if(instance==null)
                    instance=new SingletonClass();  //什么时候使用,什么时候创建
            }
        }
        return instance;
    }
    private SingletonClass(){
    }
}

2.饿汉室式:在成员属性声明的时候就创建

//对第一行static的一些解释
// java允许我们在一个类里面定义静态类。比如内部类(nested class)。
//把nested class封闭起来的类叫外部类。
//在java中,我们不能用static修饰顶级类(top level class)。
//只有内部类可以为static。
public static class Singleton{
    //在自己内部定义自己的一个
    //实例,只供内部调用
    private static final Singleton instance = new Singleton();
    private Singleton(){
        //do something
    }
    //这里提供了一个供外部访问本class的静态方法,可以直接访问
    public static Singleton getInstance(){
        return instance;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_35207917/article/details/83352689