class single{
private static single m_object1;
private static single m_object2;
public static int i=0;
private single()
{
}
public static single mb_getobject()
{
i++;//用于计数 对象的个数
if(i<=2) if(i==1) {
m_object1=new single();
return m_object1;
}
else{
m_object2=new single();
return m_object2;
}
else
return m_object1;//
} }//只能实例化两个对象的单体类设计完毕
public class J_Singleton { /**
* @param args
*/
public static void main(String[] args) {
single a=single.mb_getobject();
System.out.println(single.i);//测试静态成员值的变化
single b=single.mb_getobject();//实例化单体类
System.out.println(single.i);
if(a==b)
System.out.println("相同");
else
System.out.println("不同");
}}
结果显示 1 2 不同,我想问下:1 private single(){}是否未被调用 因为我试过, 将静态 成员 i 放入其中,实例化对象后 i值不变 仅仅是为了 在其他类中 不能自行创建类single的其他对象 2 有没有更好的设计方法
private static single m_object1;
private static single m_object2;
public static int i=0;
private single()
{
}
public static single mb_getobject()
{
i++;//用于计数 对象的个数
if(i<=2) if(i==1) {
m_object1=new single();
return m_object1;
}
else{
m_object2=new single();
return m_object2;
}
else
return m_object1;//
} }//只能实例化两个对象的单体类设计完毕
public class J_Singleton { /**
* @param args
*/
public static void main(String[] args) {
single a=single.mb_getobject();
System.out.println(single.i);//测试静态成员值的变化
single b=single.mb_getobject();//实例化单体类
System.out.println(single.i);
if(a==b)
System.out.println("相同");
else
System.out.println("不同");
}}
结果显示 1 2 不同,我想问下:1 private single(){}是否未被调用 因为我试过, 将静态 成员 i 放入其中,实例化对象后 i值不变 仅仅是为了 在其他类中 不能自行创建类single的其他对象 2 有没有更好的设计方法
感觉就想是单例模式的一种变形
既然要实例化n个对象,那么就有一个管理这些对象(起码统计计数)的对象,而这个管理对象一定是单例模式的,所以,这个问题就变成:单例模式的容器+容器内对对象的管理逻辑 了分解以后,都是简单的问题了