你没有在 A 的构造子中,或者 b 和 c 属性定义时进行显式对象初始化,所以你在 new A 的时候需要对它们进行初始化。
单例模式三要素:一个私有的本类的静态对象,一个私有的构造子,还有一个公开的提供私有对象访问的接口。实现这些就是单例。至于怎么写,看你环境的实现要求。
单例模式三要素:一个私有的本类的静态对象,一个私有的构造子,还有一个公开的提供私有对象访问的接口。实现这些就是单例。至于怎么写,看你环境的实现要求。
private static A a = new A();
private A(){
} public static A getIns(){
return a;
}
}
单例楼上都说了
private B b; //这是一个类
private C c; //这是另一个类
}这只是声明了:类 A 中包含两个类型分别为 B 和 C 的成员。而成员的值不会自动生成,必须要赋值才行,否则 b 和 c 就一直为 null。
没问题的,你考虑多了。还有,如果你用不着 b 和 c,可以考虑懒加载的。
private B b;
private C c;
//如果需要用到 b 和 c的话就要new,如果不要用到,就可以不用new的
private A(){
b = new B();
c = new C();
}
private static A a;
public static A getInstance(){
if(a==null){
a = new A();
}
return a;
}
}希望对你有用。
单子模式有饿汉式和懒汉式,你百度一下吧