老生常谈的单例模式你真的会了嘛?
【摘要】 什么是单例多例单例:就是所有的请求都用一个对象来处理,service和dao层的对象通常都是单例的, 之所以用单例,是因为没必要每个请求都新建一个对象,这样子 既浪费CPU又浪费内存;单例就是该类只能返回一个实例。 单例所具备的特点:1.私有化的构造函数2.私有的静态的全局变量3.公有的静态的方法多例:指每个请求用一个新的对象来处理,比如action; 之所以用多例,是为了防止并发问...
什么是单例多例
单例:就是所有的请求都用一个对象来处理,service和dao层的对象通常都是单例的, 之所以用单例,是因为没必要每个请求都新建一个对象,这样子 既浪费CPU又浪费内存;
单例就是该类只能返回一个实例。
单例所具备的特点:
1.私有化的构造函数
2.私有的静态的全局变量
3.公有的静态的方法
多例:指每个请求用一个新的对象来处理,比如action; 之所以用多例,是为了防止并发问题;即一个请求改变了对象的状态,此时对象又处理另一个请求,而之前请求对对象状态的改变导致了对象对另一个请求做了错误的处理;
用单例和多例的标准只有一个, 当对象含有可改变的状态时则多例,否则单例;
懒汉式单例模式:
public class Singleton {
private static Singleton singleton = null;
private Singleton(){
}
synchronized public static getInstance(){
if(singleton == null){
singleton = new Singleton();
}
return singleton;
}
}
饿汉式单例模式
public class Singleton {
private static final Singleton singleton = new Singleton();
public Singleton(){
}
public static getInstance(){
return singleton ;
}
}
线程安全式单例模式:
public class Singleton{
private static Singleton singleton;
private Singleton(){
}
public static getInstance(){
if(null == singleton){
synchronized(Singleton.class){
if(null == singleton){
singleton = new Singleton();
}
}
}
return singleton;
}
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)