:cry:
在我理解,单例就是在整个jvm中只存在一个类实例。
但是不知道在什么时候,在什么地方使用单例。
所以举个例子,帮忙看下我的理解对不对。
jsp页面 userName=1 passWord=2 (用户1提交)
jsp页面 userName=3 passWord=4 (用户2提交)
两人同时新增的话,进入action,如果实体类(Model)是单例的话,就会出现用户甲和用户乙的数据混乱对吗?
:cry:
在我理解,单例就是在整个jvm中只存在一个类实例。
但是不知道在什么时候,在什么地方使用单例。
所以举个例子,帮忙看下我的理解对不对。
jsp页面 userName=1 passWord=2 (用户1提交)
jsp页面 userName=3 passWord=4 (用户2提交)
两人同时新增的话,进入action,如果实体类(Model)是单例的话,就会出现用户甲和用户乙的数据混乱对吗?
[quote]
问题1:在我理解,单例就是在整个jvm中只存在一个类实例。 理解对不对
问题2:在什么时候,在什么地方使用单例。
问题3:我举的例子
单例不是同一实例吗,两个用户调同一个实例并且修改,当然会产生覆盖的问题啊。
[/quote]
1.对的
2.单例主要是用在你只需要一个实例的时候,分为2种:多个实例就会出问题,创建实例消耗太大。
比如说:写日志,你如果多个实例大开同一个文件写日志,那肯定是不行的(当然,如果你非要多个实例之间做同步,打开文件,写,关,然后下一个实例,这种,那性能就不行了哦)
3.你举的那个例子,在Struts2里,比如说把Action定义成下面这样,那就是不行的
[code="java"]
public class Login {
private String name;
private String pass;
//get/set......
}
[/code]
这样子用单例就会乱掉,所以Struts2不能用单例解决这种问题。
如果是Struts1,是封装在Form里作为方法参数传入的就没有问题。