理解构造方法私有化过程
- 1. 构造方式私有化
class Singleton {
private Singleton(){ }
public void print() {
System.out.println("hello");
}
}
当构造方法私有化后,外部类无法对其进行实例化
- 2. 在类内部实例化对象
class Singleton {
private Singleton(){ }
Singleton instance = new Singleton();
public void print() {
System.out.println("hello");
}
}
此时需要通过在类内部进行实例化对象的产生
- 3. 静态方法取得此实例化对象
public class TestSingleton {
public static void main(String[] args) {
Singleton s = Singleton.instance;
s.print();
}
}
class Singleton {
private Singleton(){ }
static Singleton instance = new Singleton();
public void print() {
System.out.println("hello");
}
}
加入static修饰,使得其他类取得此类的实例化对象
- 4. private封装类成员变量
public class TestSingleton {
public static void main(String[] args) {
Singleton s = Singleton.getInstance();
s.print();
}
}
class Singleton {
private Singleton(){ }
private static Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
public void print() {
System.out.println("hello");
}
}
既然instance为类成员,就应该用private封装起来。故出现了getInstance()方法
小结
- java中有一种设计模式叫单例设计模式,所谓单例就是在入口(构造方法)限制了对象的实例化操作。如果不希望一个类产生多个对象时,使用单例设计模式。
- 单例设计模式的核心就是:将类的构造方法私有化,在类的内部产生实例化对象,并通过类的静态方法返回实例化对象的引用。