单例模式的破坏方法
什么是单例模式
单例模式就是指定某个对象在程序的运行过程中,不管通过多少次创建,只会返回同一个对象,就是为该对象使用了单例模式。
创建单例模式的方法
单例模式一般都是通过私有化构造方法和变量,并将变量静态化。通过调用指定的public成员方法获取单例模式的对象。
所以,如果能够使用私有化的构造方法创建对象,就可以创建一个新的对象,即破坏了单例模式,废话不多说,直接进入主题。
如何破坏单例模式
题上说到,需要使用构造方法创建一个新的对象,但是构造方法是私有化的,怎么才能创建呢?好了这里不卖关子了
使用反射机制破坏单例
反射的机制和使用方法这里不多讲了,不懂的请看我上一篇文章。
第一步. 首先获取该单例的Class类对象,通过调用该对象的getDeclaredConstructors()方法,获取对应构造方法的对象,使用Constructor类接收。
第二步. 调用该Constructor类对象的newInstance()方法(根据需求看是否需要传入参数), 即可返回该单例的一个新对象,与原对象的地址不相同,单例模式便成功破坏。