码迷,mamicode.com
首页 > 其他好文 > 详细

初探单例模式学习笔记

时间:2014-06-16 11:23:56      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:算法   模式   

一、如何防止一个类产生多个实例呢?

1.不做任何措施,贴出一幅海报,通知所有程序员不能对这个类创建多个实例  (不现实)

2.让这个类无法创建另一个实例    -> 单例模式

 

 

二、但是对类进行实例化,它的决定权在类的外部,如何将决定权回归类的自身呢?

-> 将构造函数变成private类型  ,不允许外界直接调用构造方法创建实例

 

 

 

 

三、但我们总要给外界提供一个途径获得类的实例

 

class T

{

        private T();

        public static T getInstance()

    {

       return new T();

    }

}


 

 

 

四、事实上现在允许创建第二个实例,如何防止呢
 

class T
{
	private static T t;
		
	private T()
	{
	}
	
	public static T getInstance()
	{
		if(t==null) t = new T();
		return t;
	} 
}


  

五、可以通过创建好对象,返回对象,来控制只有一个实例。如果创建过程复杂,可以写在静态块中。

 

/*
  单例模式
*/

class T
{
	private static T t;
	
	static{
	  t = new T(); 
	}
	
	private T()
	{
	}
	
	public static T getInstance()
	{
		//if(t==null) t = new T();
		return t;
	} 
}

public class A
{
	public static void main(String[] args)
	{
		T a = T.getInstance();
		T b = T.getInstance();
		
		System.out.println(a==b);
	}
}

 

 


 

六、静态块什么时候会执行它呢?

-> 当类第一次加载的时候

 

 

 

单例模式的变种:少例      ->对象池技术





 


 

初探单例模式学习笔记,布布扣,bubuko.com

初探单例模式学习笔记

标签:算法   模式   

原文地址:http://blog.csdn.net/wangxiaobupt/article/details/30090417

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!