老生常谈的单例模式你真的会了嘛?

举报
浅羽技术 发表于 2022/11/26 23:09:15 2022/11/26
【摘要】 什么是单例多例单例:就是所有的请求都用一个对象来处理,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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。