类的相互依赖导致StackOverflowError

前端之家收集整理的这篇文章主要介绍了类的相互依赖导致StackOverflowError前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. public class SchoolServiceImpl {
  2. private static SchoolServiceImpl instance = new SchoolServiceImpl();
  3. private static ClassServiceImpl classServiceImpl = ClassServiceImpl.getInstanse();
  4. public static SchoolServiceImpl getInstanse() {
  5. if (instance == null)
  6. return instance = new SchoolServiceImpl();
  7. return instance;
  8. }
  9.  
  10. public int getSchoolCount() {
  11. return classServiceImpl.getClassesCount();
  12. }
  13. public static void main(String[] args) {
  14. System.out.println(classServiceImpl.getClassesCount());
  15. }
  16. }

  1. public class ClassServiceImpl {
  2.  
  3. /**
  4. * @param args
  5. */
  6. private static ClassServiceImpl instance = new ClassServiceImpl();
  7. public static ClassServiceImpl getInstanse() {
  8. if (instance == null)
  9. return instance = new ClassServiceImpl();
  10. return instance;
  11. }
  12. private static SchoolServiceImpl schoolServiceImpl=SchoolServiceImpl.getInstanse();
  13. public int getClassesCount()
  14. {
  15. System.out.println(classServiceImpl.toString());
  16. return schoolServiceImpl.getSchoolCount();
  17. }
  18. }

如上两个类彼此依赖其中的方法,导致死循环,最终导致内存溢出。

从中得到的教训:尽可能减少类的彼此依赖,做到单向依赖。

猜你在找的设计模式相关文章