我有A类和B类B。他们的构造函数看起来像这样:
public A(B b) {this.b = b;}
public B(A a) {this.a = a;}
他们两个都有另一个类的实例作为实例变量。
是否可以在不实例化的情况下创建这些类的实例?我想要A类和B类的实例。类A类的实例应将B类的实例添加为其实例变量,反之亦然。
其中一个类,让我们选择 A
,需要一个方法
public void setB(B b) {
this.b = b;
}
可以在 A
和 B
实例化之后调用。
两个类紧密耦合。如果每个类实例都需要另一个实例来初始化,则需要从一开始就对类设计进行修订。相反,要存档一个实例的目标具有另一个实例的目标,在这种情况下,使用setter
将有所帮助
class A {
private B b;
public A(B b) { this.b = b; }
}
class B {
private A a;
void setA(A a) { this.a = a; }
}
B b = new B();
A a = new A(b);
b.setA(a);