首页 > 代码库 > 初探单例模式学习笔记

初探单例模式学习笔记

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

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);	}}

 

 


 

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

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

 

 

 

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