关于单态的疑问

某个应用程序中
classA 用单态模式实现
在classB classC中都生成classA的实例,b c中的实例还是同一个吗???
一直不理解 有人能解释一下吗?见笑了!!!!

是一个实例,单态模式的代码大概如下:

public class MySingleton {
//注意,这里是个类成员
public static MySingleton mySingleton = null;

//构造方法
public MySingleton(){
if (mySingleton == null)
mySingleton = new MySingleton();
return mySingleton;
}
}

在其他类调用MySingleton的构造方法时,会返回mySingleton,而mySingleton 又是一个类成员,所以也就有且仅有一个实例了。

首先感谢回复。

如上问题:
先在b中生成实例后,做相关操作,比如存入数据等等。然后在C中生成A的实例
能否调用实例所存入的数据?

你存入的数据和单态模式并没有关系,它是存储在外部的。

首先肯定一点: b和c中生成的实例是同一个(除非极端情况--这个实例的引用失效,那么,就要返回一个新的实例,所谓极端,就是这种情况发生的概率无穷小),如果你将数据读入到这个实例的fields当中,当然就可以访问了,因为是同一个实例嘛。

举个例子: 真实世界中的单态模式应用,很典型的就是打印机,我们在调用打印之前,首先要对打印机做一些配置,如端口等等,配置好以后,就可以调用打印机打印了,而且打印是按照我们设定好的配置属性进行的。这个例子就调用了单态对象(打印机)的两个操作(打印配置、打印),打印配置的属性在打印的过程中被应用到,就是你说的:第一次存入的数据,在第二次被访问到了。

不知我是否说明白。

比喻比较形象 谢谢回复!