我有两个类 A 和 B ,其中,我在类 A中创建类 B 的对象在构造函数中如下:
B obj;
public A(){
obj = new B();
}
我需要一个函数,例如类 B 中的returnValue()
,它应该将值(int x& int y)发送到类 A (它创建了 B )
有没有办法这样做:函数returnValue()应该在不执行obj.returnValue()调用的情况下将值发送给A类。
有没有办法做到这一点。 请帮忙.. 感谢..
答案 0 :(得分:3)
你需要打破这种令人困惑的依赖循环。例如,您可以将B传递给A的构造函数,以便在创建A的实例之前完全构造B.
B b = new B();
ReturnValue rv = b.returnValue(); // where rv contains x and y
A = new A(b, rv.x, rv.y);
其中A看起来像
public class A {
int x;
int y;
B b;
public A(B b, int x, int y) {
this.b = b;
this.x = x;
this.y = y;
}
...
在构造函数中创建对象会使测试代码变得困难。请参阅有关可测试性问题的文章,Flaw: Constructor does Real Work:
在构造函数中工作,例如:创建/初始化协作者,与其他服务通信,以及设置自己状态的逻辑,删除测试所需的接缝,强制子类/模拟继承不需要的行为。构造函数中的太多工作会阻止实例化或改变测试中的协作者。