下面我發佈了一個帶有循環依賴關係的簡單Java代碼示例。解決循環依賴問題Java
MyObject
有兩個成員(myObject1
和myObject2
),它們具有對象本身的引用。
有沒有辦法解決依賴關係,但保持功能?
public abstract class AbstractMyObject {
public void myMethod(int param) {
System.out.println(param);
}
}
public class MyObject extends AbstractMyObject {
private MyObject1 myObject1;
private MyObject2 myObject2;
public MyObject() {
myObject1 = new MyObject1(this);
myObject2 = new MyObject2(this);
...
}
private void aMethod() {
myObject1.doSomething();
myObject2.doSomething();
}
}
public class MyObjectWrapper {
private MyObject myObject;
public MyObjectWrapper (MyObject myObject) {
this.myObject = myObject;
}
public void myMethod(int param) {
this.myObject.myMethod(param);
}
}
public class MyObject1 extends MyObjectWrapper {
public MyObject1(MyObject myObject) {
super(myObject);
}
private void aMethod() {
myMethod(1);
}
public void doSomething() {
...
}
}
public class MyObject2 extends MyObjectWrapper {
public MyObject2(MyObject myObject) {
super(myObject);
}
private void aMethod() {
myMethod(2);
}
public void doSomething() {
...
}
}
這是真正的Java?檢查你的構造函數! –
你想保留什麼功能? – weston