单例模式 ( Singleton )实例代码:
package self.learn.privateconstructor;
public class Singleton {
// 在内部产生本类的实例化对象,将属性封装
private static Singleton instance = new Singleton();
private Singleton() { // 构造方法被封装,无法实例化对象
// 在类外部通过 new 实例化对象,编译错误`在这里插入代码片`
}
public static Singleton instance() { // 通过静态方法取得 Singleton 类的实例
return instance; // 静态方法可以通过类名直接调用,避免在类外部实例化对象
}
public void print() {
System.out.println("Java is interesting!");
}
}
package self.learn.privateconstructor;
public class SingletonDemo {
public static void main(String[] args) {
Singleton s1 = Singleton.instance(); // 访问类中的静态方法,取得实例化对象
Singleton s2 = Singleton.instance(); // 访问类中的静态方法,取得实例化对象
Singleton s3 = Singleton.instance(); // 访问类中的静态方法,取得实例化对象
s1.print(); // 输出信息
s2.print(); // 输出信息
s3.print(); // 输出信息
}
}
运行结果截图:
从上面的程序运行结果可以发现,虽然声明了 3 个 Singleton 的对象,但是实际上所有的对象都只使用了 instance 一个引用,也就是说,此时不管外面如何使用,最终结果也只有一个实例化对象存在。