我有一个基本的类结构:
public class A {
}
public class B extends A {
private C objC;
public B() {
this.objC = new C();
}
}
public class C extends A {
private B objB;
public C() {
this.objB = new B();
}
}
我需要B
和C
来了解彼此,以便他们可以访问彼此的方法,但显然在运行时这会创建一个循环依赖并导致java.lang.StackOverflowError: null
。我看过this和this,但我似乎无法就我应该做的事情做好决定。
有没有更好的方法来解决这个问题?
编辑1:在保持简洁的同时更能描述我的情况:
public class A {
}
public class B extends A {
private C objC;
public B() {
this.objC = new C();
}
public String foo1() {
int x = C.foo3();
//do something
return Integer.toString(int);
}
public int foo2() {
// do something
}
}
public class C extends A {
private B objB;
public C() {
this.objB = new B();
}
public int foo3() {
int y = B.foo2();
//do something
return y;
}
}
答案 0 :(得分:1)
如果要在不同对象之间建立通信,请使用Mediator模式。
Mediator
- 定义同事对象之间的通信接口
ConcreteMediator
- 实现Mediator
接口并协调Colleague对象之间的通信。它了解所有同事及其在交流沟通方面的目的。
ConcreteColleague
- 通过其调解员与其他同事沟通