public class SchoolServiceImpl {
private static SchoolServiceImpl instance = new SchoolServiceImpl();
private static ClassServiceImpl classServiceImpl = ClassServiceImpl.getInstanse();
public static SchoolServiceImpl getInstanse() {
if (instance == null)
return instance = new SchoolServiceImpl();
return instance;
}
public int getSchoolCount() {
return classServiceImpl.getClassesCount();
}
public static void main(String[] args) {
System.out.println(classServiceImpl.getClassesCount());
}
}
public class ClassServiceImpl {
/**
* @param args
*/
private static ClassServiceImpl instance = new ClassServiceImpl();
public static ClassServiceImpl getInstanse() {
if (instance == null)
return instance = new ClassServiceImpl();
return instance;
}
private static SchoolServiceImpl schoolServiceImpl=SchoolServiceImpl.getInstanse();
public int getClassesCount()
{
System.out.println(classServiceImpl.toString());
return schoolServiceImpl.getSchoolCount();
}
}
如上两个类彼此依赖其中的方法,导致死循环,最终导致内存溢出。
从中得到的教训:尽可能减少类的彼此依赖,做到单向依赖。