【问题标题】:Circular Dependency in java- Designjava中的循环依赖-设计
【发布时间】:2015-11-19 02:43:59
【问题描述】:

如何防止循环依赖,任何设计模式??,否则会导致堆栈溢出。 我被要求重新设计这个。

class A {
    static void method(){
        B.method(); 
    }
    public static void main(String args[]){
        method();
    }
}

class B {
    static void method(){
        A.method(); 
    }
}

【问题讨论】:

  • 这与递归类似,必须有一些条件才能打破这个调用循环

标签: java design-patterns stack-overflow circular-dependency


【解决方案1】:

这不仅仅是循环依赖,这是一个无限的recursion

您必须在A.method()B.method() 中定义退出分支,例如:

class B{
    static void method(){
        if (someCondition) {
            return;
        }
        A.method(); 
    }
}

someCondition 是根据使用此递归解决的业务问题计算得出的(您知道它是什么)。

【讨论】:

    【解决方案2】:

    在目前的状态下,这是一个遗嘱recur infinitely,因为没有定义基本情况。

    您需要使用条件语句定义至少一种方法,以使其在某种状态后爆发。

    static void method(condition){
        A.method(); 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-29
      • 2020-10-27
      • 2016-05-24
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多