小白的Java框架的学习之路,之Java的单列设计模式

	首先我们需要知道什么是单列设计模式,主要解决了那些问题,我们的需求是什么!!!

我们最初开发是为了写出代码,现在需要的是写代码的运行效率,不能死记代码,是没有任何意义的。那我们言归正传,

单列设计模式:从始至终获取一个对象,不管创建多少次始终是一个对象,那我们从Java的创建对象来看,每一个对象的创建都需要调用它自己类中的构造方法,通过构造方法,new出多个对象的实列!,那我们肯定不可以让他new多个实例化对象,所以我们应该想到,必须私有化构造方法,通过我的方式给你一个实例对象,这样就可以保证无法在外部进行创建对象,,那么私有化构造还是远远不够的,咱们学习Java基础的时候,学习static静态关键词的时候,我们知道,static修饰过的属性,一个类只会共有一个!修饰过的方法可以不经过创建对象,直接使用类名使用,私有化构造方法后不能在外部创建对象,但是可以在自己内部new对象,那我们就想办法在自己类中静态new对象,,通过静态方法传出去就解决了对象传出的问题,就可以实现单列的创建对象实列!
单列设计模式有两种,一个是饿汉式单列,一个是懒汉式单例,这都是前辈们的劳动成果,我们相比之下现在幸福了不少,作为小白怀揣着敬畏之心,才能让我们不断的成长,努力学习。
饿汉式设计模式
在这里插入图片描述
这个设计模式相对来说式比较简单的,而且式安全的,不会产生不安全的因素,我们分析一下它的底层,饿汉式为什么叫做饿汉,是因为在加载类的时候就已经创建好了实列对象,我不是凭空说出来的,先把构造方法中进行标志的打印一段话进行标识,只有对象创建好,才会打印,经过测试,当我们加载它的class的时候就已经打印了构造中的文字
在这里插入图片描述
当我们加载完这段Class.forName(“全限定名”)后,出现了这个结果,实践是检验真理的唯一标准,应该成为我们的座右铭。
饿汉式测试结果:
在这里插入图片描述
结果,构造方法只出现了一次,也就是说只创建了一个实列对象,看看我们的地址码也是相同的,饿汉式大功告成!不过还没完呦,懒汉式设计模式也是我们应该知道的也需要分析原理,而且懒汉式需要考虑的东西多。
懒汉式设计模式
首先还是跟之前一样,不可以在外部创建对象,还是需要私有化构造方法,提供一个静态属性这次懒汉式不会出项给静态属性先赋值的情况,还是需要提供静态的方法,让我们的类名在外部可以点出它的静态方法,具体不一样的的内容就是方法体的内部实现,懒汉式也叫做(双重判定锁),从名字来看那就是两个判断,再加一个锁呗,哈哈哈,其实就是这样的。先判断你的属性是否为null,然后加一个同步锁,锁住一段代码有助于提高运行效率,锁里面加一个判断属性是否为null,然后里面给静态属性赋值。
在这里插入图片描述
懒汉式测试结果
在这里插入图片描述
结果还是一样的,为什么要加锁,可能会有人问,因为在多线程的情况下,会出现多例,new对象需要花费时间的,所以只有双重判定锁才会安全。

猜你喜欢

转载自blog.csdn.net/qq_29349143/article/details/88044519