java设计模式之单例模式实例讲解
2017-09-27 本文已影响35人
黑n大
单例模式是应用最广的模式,在开发中,如果我们想要让一个类在nvm中只有一个实例的话,就设计成单例模式,单例模式能够减少资源的消耗,这对我们实际开发中很重要,所以我们要来学习一下这个模式。
单类模式的实现思路:
1.构造私有,用private修饰
2.通过一个静态方法返回这个对象
3.确保这个类的对象只有一个,尤其是在多线程下。
4.确保这个类在反序列化的时候不会被创建。
这就是实现思路,接下来我们看看具体的实现
第一种:饿汉式
这种实现直接new出该对象,不管我们需不需要,直接会有一个,保证这个类实例的唯一性,无论是否在多线程下,都是同一个对象。
第二种:懒汉式
这种可以看出,它并没有直接给出这个类的实例对象,而是我们需要的时候在创建,但是有一个问题就是在多线程的情况下,是不安全的,所以添加了synchronized的,保证了它的安全,但是又出现新的问题,就是每次我调用getInstance()时都会进行同步,造成一定的卡顿。
第三种:双重锁
这种事目前使用最多的单例实现的方式,双重同步锁,解决了懒汉式的问题。但是在有些书上说这种方式并不好,我也不是很懂,意思是有可能获取不到这个对象,但是概率很小很小。。。
第四种 静态类的方式
这种方式目前也是很多人用的方式,第一次加载该类时不会初始化sing,只有在调用getInstance()时才会加载Single类,这中方式不仅解决了线程问题,也保证了对象的唯一性。
以上就是单例模式的实现方式,大家可以根据自己的需求来选择合适的方式。