关于单态的疑问

05-07-31 Javalga
某个应用程序中

classA 用单态模式实现

在classB classC中都生成classA的实例,b c中的实例还是同一个吗???

一直不理解 有人能解释一下吗?见笑了!!!!

    

自由虫子
2005-08-01 09:31
是一个实例,单态模式的代码大概如下:

public class MySingleton {

//注意,这里是个类成员

public static MySingleton mySingleton = null;

//构造方法

public MySingleton(){

if (mySingleton == null)

mySingleton = new MySingleton();

return mySingleton;

}

}

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

Javalga
2005-08-01 12:49
首先感谢回复。

如上问题:

先在b中生成实例后,做相关操作,比如存入数据等等。然后在C中生成A的实例

能否调用实例所存入的数据?

自由虫子
2005-08-01 14:57
你存入的数据和单态模式并没有关系,它是存储在外部的。

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

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

不知我是否说明白。

猜你喜欢
2Go 1 2 下一页