一、如何防止一个类产生多个实例呢?
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);
}
}
六、静态块什么时候会执行它呢?
-> 当类第一次加载的时候
单例模式的变种:少例 ->对象池技术