单例多例
来源:互联网 发布:软件企业评估证书 编辑:程序博客网 时间:2024/05/16 12:26
单例多例需要搞明白两个问题:
1. 什么是单例多例;
2. 如何产生单例多例;
3. 为什么要用单例多例
4. 什么时候用单例,什么时候用多例;
1. 什么是单例多例:
所谓单例就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的,而多例则指每个请求用一个新的对象来处理,比如action;
2. 如何产生单例多例:
在通用的SSH中,单例在spring中是默认的,如果要产生多例,则在配置文件的bean中添加scope="prototype";
3. 为什么用单例多例:
之所以用单例,是因为没必要每个请求都新建一个对象,这样子既浪费CPU又浪费内存;
之所以用多例,是为了防止并发问题;即一个请求改变了对象的状态,此时对象又处理另一个请求,而之前请求对对象状态的改变导致了对象对另一个请求做了错误的处理;
用单例和多例的标准只有一个:
当对象含有可改变的状态时(更精确的说就是在实际应用中该状态会改变),则多例,否则单例;
4. 何时用单例?何时用多例?
对于struts2来说,action必须用多例,因为action本身含有请求参数的值,即可改变的状态;
而对于STRUTS1来说,action则可用单例,因为请求参数的值是放在actionForm中,而非action中的;
另外要说一下,并不是说service或dao一定是单例,标准同第3点所讲的,就曾见过有的service中也包含了可改变的状态,同时执行方法也依赖该状态,但一样用的单例,这样就会出现隐藏的BUG,而并发的BUG通常很难重现和查找
1. 什么是单例多例;
2. 如何产生单例多例;
3. 为什么要用单例多例
4. 什么时候用单例,什么时候用多例;
1. 什么是单例多例:
所谓单例就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的,而多例则指每个请求用一个新的对象来处理,比如action;
2. 如何产生单例多例:
在通用的SSH中,单例在spring中是默认的,如果要产生多例,则在配置文件的bean中添加scope="prototype";
3. 为什么用单例多例:
之所以用单例,是因为没必要每个请求都新建一个对象,这样子既浪费CPU又浪费内存;
之所以用多例,是为了防止并发问题;即一个请求改变了对象的状态,此时对象又处理另一个请求,而之前请求对对象状态的改变导致了对象对另一个请求做了错误的处理;
用单例和多例的标准只有一个:
当对象含有可改变的状态时(更精确的说就是在实际应用中该状态会改变),则多例,否则单例;
4. 何时用单例?何时用多例?
对于struts2来说,action必须用多例,因为action本身含有请求参数的值,即可改变的状态;
而对于STRUTS1来说,action则可用单例,因为请求参数的值是放在actionForm中,而非action中的;
另外要说一下,并不是说service或dao一定是单例,标准同第3点所讲的,就曾见过有的service中也包含了可改变的状态,同时执行方法也依赖该状态,但一样用的单例,这样就会出现隐藏的BUG,而并发的BUG通常很难重现和查找
阅读全文
0 0
- 单例多例
- 单例多例
- 单例多例
- java单例多例
- Struts2 Action 单例多例模式
- 单例多例详细的解释:
- struts2的单例多例问题
- 单例多例的选择
- struts2&springmvc单例多例
- 单例多例实验;注入打印
- SPRING MVC_3_01_单例多例
- 单例多例需要搞明白两个问题
- spring 单例多例,默认,懒加载,初始化调用
- 单例多例需要搞明白两个问题:
- spring中的单例多例——scope
- struts2,servlet和springmvc的单例多例问题
- Struts1,2,Servlet,Spring MVC单例多例 线程安全
- 关于多线程,线程安全,及单例多例的详解1
- 博弈论
- 在 Vim 中优雅地查找和替换
- learn c第一章:简介(关键词和标识符)
- 商业公司应该如何配备数据分析团队?
- Codeforces Round #428 (Div. 2)(A+B)
- 单例多例
- 【UE4】如何在不更改原骨架的情况下将动画序列调整方向
- 九度oj-1431:sort.hash应用
- 老师给的jdbc连接的例子,封装之后
- Git(四)如何将更改的项目同步到github
- jQuery调试学习总结
- C++ Primer Notes(6)
- 二、安装Spark集群
- 56.合并间隔