黑马程序员-学习日记(单例设计模式的两种类型)

单例设计模式:解决一个类在内存中只有一个对象
多个程序使用统一配置信息对象时,需要保证该对对象的唯一性。

保证对象唯一性的实现步骤:

1.将构造函数私有化:为了避免其他程序过多建立该对象,禁止其他程序调用该对象。
2.在类中创建一个本类对象:为了让其他程序可以访问该类对象
3.提供一个方法可以获取到该对象的方法:方便其他程序访问自定义的本类对象。(类方法的访问方式只有两种,建立对象或定义为静态方法)
饱汉式:
public class testIO{
       public static void main(String[] args){
    	   Single s = Single.getInstance();
      }   
}

class Single
{
	private Single(){}//私有化构造函数,使得无法随意创建对象
	static Single s = new Single();//创建对象,由于被用于静态方法中,所以要加上static关键字
	public static Single getInstance(){
		return s;
	}
}

 饿汉式:

class single2
{
	private single2(){}
	static single2 s2 = null;
	public static synchronized single2 getInstance(){ //2、而加了synchronized关键字后只能有一个线程进入执行,会导致效率低下
		if (s2==null) //1、注意:多个线程调用时,若某一个线程停在这儿,另一个线程也能进入执行。会导致单例失败。
			s2 = new single2();
		return s2;
	}
	//3、这样做比较好
	public static single2 getInstance2(){
		if (s2 == null){
			synchronized (Single.class) {
				if(s2==null)
					s2 = new single2();
			}
		}
		return s2;
	}
}

 



posted @ 2014-11-27 19:11  tzr  阅读(138)  评论(0)    收藏  举报