Below I posted a simple Java code example with circular dependencies.
MyObject
has two members (myObject1
and myObject2
) that have a reference to the object itself.
Is there a way to resolve the dependencies but keep the functionality?
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() {
...
}
}