Java的设计模式之单例模式-CSDN博客

31 阅读2分钟

在某些特殊场合中一个类对外提供了一个对象且只能是一个对象,这样的类叫做单例类,编写单例类的设计思想叫做单例设计模式。

如例:
自定义Singleton类,实现该类的封装;
自定义TestSingleton类,在main方法中能得到且只能得到Singleton类中的一个对象;

public class Singleton{

    //2.提供本类的引用作为本类的成员变量
    private
    //static 表示提升为类的层次
    private static Singleton sin = new Singleton(); //饿汉式
    //private static Singleton sin = null; //懒汉式

    //1.自定义无参的构造方法,使用private关键字修饰
    //static关键字不能修饰构造方法,加上static隶属于类层级,就不能访问非静态的成员了
    private /*static*/ Singleton(){        
    }

    //3.提供公有的get成员变量方法将成员变量返回出去
    public static Singleton getInstance(){
        return sin;
        //if(sin == null){ //懒汉式 返回时才创建
        //     sin = new Singleton();
        //}
        //return sin;
    }
}

public class TestSingleton{

    public static void main(String[] args){

         //Singleton s1 = new Singleton();
         //Singleton s2 = new Singleton();
         //System.out.println(s1 == s2); //false  得到Singleton类中的两个对象
         //因为每次new等于重新开辟内存空间

         Singleton s1 = Singleton.getInstance(); 
         Singleton s2 = Singleton.getInstance();
         System.out.println(s1 == s2); //true 等于每次调用的都是Singleton下的成员方法getInstance,返回的是同一个对象,开辟的是同一块内存空间
    }
}

单例设计模式编写流程:
第一步:编写一个私有化的无参构造方法,使用private关键件修饰
第二步:提供本类类型的对象作为本类的成员变量,并使用private static共同修饰;
第三步:提供共有的静态(static)get成员变量将用于对象返回出去。

单例模式主要分饿汉式和懒汉式;
饿汉式表示一开始就是创建一个对象,懒汉式是直到返回时才创建对象。