针对刚入门的新手,虽然实现单例模式很简单,但是应该还是有些人不太理解何为一个单例模式只能有一个实例的说法。举个例子,如下图
这是一个普通的类,重写的构造方法能够打印出信息,所以当创建多少个该类的实例对象时,就会打印出对应次数的信息,那么创建两个实例时,便打印出两句话
这是一个普通类的测试结果,接下来看单例模式,例子是懒汉式的单例模式。
构造方法私有化说明不能通过new来创建该类实例,只能通过调用静态方法getInstance()来创建唯一的实例,这里我声明了一个静态变量i,并使用Add()方法来观察i的变化。
这里同样创建"两个实例",并且分别使用创建出来的的对象去调用Add()方法,
最后出来的结果,不仅没有出现两句构造方法中的句子,而且通过test()打印出来的i变量也变成了2,这就说明表面上实例了两个对象,但是实际上s1与s2是同一个对象,为了验证,使用= =比较两个对象。我们都知道==比较引用类型时,他是比较堆中的地址的,所以如果两个对象是同一个必然会返回true,否则返回false
结果证明,确实是同一个对象,所以现在应该就理解单例模式中所说的只有一个实例的说法了吧。
本文只正对刚入门的新手,本人也是刚入行的小白,如有哪里说错了,望大家谅解啊,谢谢了