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

来源:互联网 发布:安踏网络授权 编辑:程序博客网 时间:2024/06/05 14:20

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

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

总结就是:

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

0 0
原创粉丝点击