为什么action使用的多例模式,但是service层和dao层用的是单例模式

使用单例和多例的判定条件是并发访问时会不会对类中公共属性进行修改。如果有可能修改,那就最好用多例,否则会出现各种异常情况。

action中一般会有前端对应的属性,这个一般是action的成员变量,如果是单例访问,所有的访问公用一个action实例对象,当然也公用里面的成员变量和方法,在使用成员变量时就有可能出问题了,比如多个请求同时对同一个属性进行修改,那不就乱了?因此在action层采用多例来避免这种情况的发生,而service中公共属性顶多也就有dao的引用,dao中公共属性也就有对数据库包装类或你自定义类的引用,这个引用通常情况下载项目启动时就已经实例化了,访问时只是使用而已,并不涉及到修改这些公共的操作,因此也就不会出现action中的情况,因此使用单例就行了,这样也可以节省系统资源。

总结就是:

Action要接收request的参数, 你的参数和我的参数不同, 所以不能用单例
Dao中唯一的状态就是连接数据库, 但是这个恰好对大家都是相同的, 所以是单例
Service, 业务逻辑, 里面的成员变量都是Dao, 既然Dao是无状态的, 那么Service也可以认为是无状态的

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值