日期:2014-05-20  浏览次数:20738 次

两个对象如何相互引用

我有两个对象A1和A2,须在A1中使用A2,且须在A2中使用A1:

class   A1
  {A2   b;
      public   A1(A2   a)   {b=a;}
      ...
  }

但是如何在A2中使用A1?

class   A2
  {A1   b;
...
    void   setA1(A1   a)   {b=a;}
...
  }

这样可以在A1中调用   b.setA1(this);

是不是只能这样?如何修改能使结构好一点?

------解决方案--------------------
楼上的还有问题,这样set的时候需要设置2次
可以把以上2步一次完成
class A1
{
A2 a2;
void connect(A2 a2)
{
this.a2=a2;
a2.a1=this;
}
}
class A2
{
A1 a1;
void connect(A1 a1)
{
this.a1=a1;
a1.a2=this;
}
}

//测试代码
A1 a1=new A1();
A2 a2=new A2();
a1.connect(a2);
//a2.connect(a1);
------解决方案--------------------
呵呵,小伙儿挺用心,不过你真这种做法不妥。

1.并没有减少代码,只不过把调用着的操作,放到了被调用者内部,并且代码的可读性降低。
2.增强了耦合,强迫让两者发生关系。