详解懒汉模式和饿汉模式以及他们的改进

提到单例模式的话相信很多人都不会陌生,一般初级程序员也知道懒汉模式和饿汉模式。

那么什么是单例模式呢?我个人低的理解就是当用这个类的对象的时候就只能创建同一个对象。是你,是你,还是你!

而在单例模式中又经常是懒汉和恶汉式进行加载。并没有痴汉也没有电车。。。我什么都不知道。

什么是饿汉模式呢?很饥饿,你想想,当人很饥饿时候是不是就有什么吃什么,那就是这个道理,所以就已加载类就创建对象。就好像当刚建好一个房子。主人就 搬了进去也不等装修。

那么她的代码是怎么实现的呢?

这就是饿汉模式。但是这个有一个问题,是什么呢?那就是如果我只想要这个类的一个静态方法,那么当我在调用这个静态方法时,这个对象也就被创建了,那么这无疑是耗费内存的。就好比我给别人介绍一个房子,说这房子怎么样,厨房排风系统很好。这时主人突然就跑了出来,快买快买。这就尴尬了。就好比这个冷笑话。

那么既然饿汉有点不能满足,试试懒汉模式吧。懒汉模式就是用的时候再去加载。就好比刚才我给别人介绍了房子的各种好,客人终于动心了就想买,这时候房子主人才出来和客人进行下一步的沟通。好我们继续看代码。

这就是懒汉模式,这个由于没有静态块那么就不会再类加载时就创建对象。只有调用这个方法时候才创建对象,而且需要判断,就好比客人说接下来就和主人谈吧,主任说谈过了就和以前那个谈。没谈过我现在就出来(这个例子是呼应那个判断。感觉有点欠火候)总觉得判断有点不够简洁,不仅有人要说了:就你事多!不判断哪知道要不要创建对象。

那么有没有既能可以调用其他方法不创建对象,又能创建对象不需要判断 就是同时修改了饿汉和懒汉的缺点的。有的!请看

看到没,他就避免了两个缺点,集美貌与优雅于一身。相对饿汉的静态块,他用了静态内部类。相对于懒汉的每次调静态方法都要进行判断,他采取静态内部类保证只之初创见一次对象。perfect!

原文地址:https://www.cnblogs.com/houdong-now/p/7501977.html