Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java设计中的循环依赖_Java_Design Patterns_Stack Overflow_Circular Dependency - Fatal编程技术网

java设计中的循环依赖

java设计中的循环依赖,java,design-patterns,stack-overflow,circular-dependency,Java,Design Patterns,Stack Overflow,Circular Dependency,如何防止循环依赖,任何设计模式??,否则会导致堆栈溢出。 我被要求重新设计这个 class A { static void method(){ B.method(); } public static void main(String args[]){ method(); } } class B { static void method(){ A.method(); } } 这不仅仅是循环依赖,

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

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

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

这不仅仅是循环依赖,这是一种无限依赖

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

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

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

在其当前状态下,这是一个遗嘱,因为没有定义基本情况

您需要使用条件语句定义至少一个方法,以使其在某个状态后中断

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

这是一个类似于递归的情况,必须有一些条件来打破这个调用循环