设计模式之单例设计模式(最初)

设计模式之单例设计模式(最初版)
a) 解决的问题:创建唯一一个对象(使创建的对象具有唯一性)
b) 设计思路:
i. 只要构造函数是public修饰,就能被其他程序调用创建任意多个对象—》用private修饰构造函数
ii. 唯一存在的对象怎么出现?–》直接在本类中new出来
iii. 在本类new出来之后怎么提供给外界使用?提供对外的public方法;
注意:既然不能通过对象来调用,那么只能通过类名来调用
如果要想通过类名来调用方法,那么被调用的方法必须用static来修饰
代码实现(饿汉式):

Class Singleton {
//1、私有化构造函数,不让外界随意创建对象;
Private Singleton (){};
//4、创建一个本类的对象,(本类中创建个数可控);由于s变成了静态的,外界调用s没必要再用方法了,这样就不行了,所以我们把s私有化,保证getInstance方法有效
Private Static Singleton s = New Singleton ();
//3、对外提供函数让外界可以获得本类的对象,由于方法加了static,静态方法中不能调用非静态成员变量,所以创建对象时需要加static
Public static Singleton getInstance(){
   return s;
}

//测试方法
Public void show(){ ...}
}

//测试类
Class SingletonTest{
   Public static void main(String[] args){
//2、调用函数获取对象,通过类名调用,所以在Singleton类中的方法上需要加static
Singleton s1 = Singleton.getInstance();
s1.show();
}
}

懒汉式:类在加载的时候先不在堆内存中开辟空间,在需要使用对象的时候再创建

class Single2 {
    private Single2(){}
    private static Single2 s2 = null;//初始化为null
    public static Single2  getInstance(){
        //判断对象是否为空,为空则创建
        if(s2==null){
            s2 = new Single2();
        }
        return  s2;
    }
}
原文地址:https://www.cnblogs.com/DiZhang/p/12545092.html