0
点赞
收藏
分享

微信扫一扫

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

什么是单例多例

单例:就是所有的请求都用一个对象来处理,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;
	}
}
举报

相关推荐

0 条评论