下面我发布了一个具有循环依赖关系的简单Java代码示例。
MyObject 有两名成员( myObject1 和 myObject2 )它们具有对对象本身的引用。
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() { ... } }
声明接口:
public interface class MyInterface { void myMethod(int param); }
实施界面:
public class MyObject implements MyInterface {
在包装器和子体中使用接口,而不是具体类 MyObject :
public class MyObjectWrapper { private MyInterface myObject; public MyObjectWrapper (MyInterface myObject) { this.myObject = myObject; } public myMethod(int param) { this.myObject.myMethod(param); } }