先看实例:
public class Chinese {
private Chinese() {
}
static Chinese objRel = new Chinese();
public static Chinese getInstance() {
return objRel;
}
}
class TestChinese {
public static void main(String[] args) {
Chinese obj1 = Chinese.getInstance();
Chinese obj2 = Chinese.getInstance();
System.out.println(obj1 == obj2);
// new Chinese();
}
}
当new Chinese();没有被注释是结果:
当new Chinese();被注释是结果:
从结果可以看出obj1和obj2对象是一样的,也就是说Chinese类不能被外部创建(因为Chinese的构造函数为private的),可通过Chinese类本身自己创建。在外部调用时都是调用的内部创建一个objRel 对象,从而实现了单态模式。