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