两个对象如何相互引用
我有两个对象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.增强了耦合,强迫让两者发生关系。