关于<Java实用系统开发指南>第三章的表述疑惑

07-11-14 wangxuefeng003
老大,帮我解释一下

原文:

/*********************************/

前面曾提到ForumFactory是Jive提供客户端访问数据库系统的统一入口。为了保证所

有的客户端请求都要经过这个ForumFactory,如果不使用单态模式,客户端下列调用语句

表示生成了ForumFactory实例:

ForumFactory factory = new DbForumFactory();

客户端每发生一次请求都调用这条语句,这就会发生每次都生成不同factory对象实例,

这显然不符合设计要求,因此必须使用单态模式。

/********************************/

疑惑:首先明确的是客户端不会采用ForumFactory factory = new DbForumFactory()这种方式, 问题是我为什么非得用单态模式吗?

1、不使用单态模式,客户端也无需使用ForumFactory factory = new DbForumFactory();

2、getInstance()每次都产生一个新对象与"为了保证所有的客户端请求都要经过这个ForumFactory"没有任何冲突。

3、你所说的"这显然不符合设计要求,因此必须使用单态模式。",在一个读者只看到这个地方这样说是没有依据的,除非他已经看了DbForumFactory类源码了

4、该话题之外,向您请教学习的内容:此处单态模式的使用在同步控制方面如何来考虑的啊

谢谢

wangxuefeng003
2007-11-14 22:18
补充:

第4:

我所指的同步控制方面是指DbForumFactory成员方法的执行上面

banq
2007-11-15 09:52
>先明确的是客户端不会采用ForumFactory factory = new DbForumFactory()

这是创建ForumFactory 的方式,要得到ForumFactory 实例,要么new要么通过单例的getInstance,这些都是创建对象的方式:

关于单例加同步+写状态可能引发性能问题见下面讨论:

http://www.jdon.com/jivejdon/thread/17133.html

wangxuefeng003
2007-11-16 09:16
但是单例但没同步控制的可能造成程序数据的偏差

就jive此处而言

性能与偏差它是如何来权衡的?

依据是什么?

猜你喜欢