jililong_2007 2011-05-16 14:50
浏览 234
已采纳

关于java单例模式(Singleton) 求解 -

:cry:
在我理解,单例就是在整个jvm中只存在一个类实例。
但是不知道在什么时候,在什么地方使用单例。

所以举个例子,帮忙看下我的理解对不对。
jsp页面 userName=1 passWord=2 (用户1提交)
jsp页面 userName=3 passWord=4 (用户2提交)

两人同时新增的话,进入action,如果实体类(Model)是单例的话,就会出现用户甲和用户乙的数据混乱对吗?

  • 写回答

9条回答 默认 最新

  • redstarofsleep 2011-05-16 15:12
    关注

    [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里作为方法参数传入的就没有问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥20 关于CMOS电路图的提问
  • ¥15 Verilog hdl密码锁设计
  • ¥15 CreateFile无法获取特殊文件内容
  • ¥35 基于python的有ssl加密传输的socket聊天室
  • ¥15 数码管亮度控制器设计
  • ¥15 kafka客户端跨网段访问,看日志提示连接的还剩内网地址,且访问不通
  • ¥15 关于c语言代码的问题
  • ¥15 c51单片机控制步进电机
  • ¥20 Visual studio无法检测到设备
  • ¥30 vue 页面窗口放大或者缩小元素会变化