Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当您通过父构造函数向下传递子依赖项时,调用的模式是什么?_Java_Constructor_Dependencies - Fatal编程技术网

Java 当您通过父构造函数向下传递子依赖项时,调用的模式是什么?

Java 当您通过父构造函数向下传递子依赖项时,调用的模式是什么?,java,constructor,dependencies,Java,Constructor,Dependencies,假设您有一个类a,它创建一个类型为B的变量B依次创建类型为C的变量,该变量最终取决于其他类X。将X转换为C的方法如下: class A { public A(X x) { this.b = new B(x); } } class B { public B(X x) { this.c = new C(x); this.c.doSomethingWithX(); } } class C { public

假设您有一个类
a
,它创建一个类型为
B
的变量
B
依次创建类型为
C
的变量,该变量最终取决于其他类
X
。将X转换为C的方法如下:

class A {
    public A(X x) { 
        this.b = new B(x);
    }
}

class B {
    public B(X x) { 
        this.c = new C(x);
        this.c.doSomethingWithX();
    }
}

class C {
    public C(X x) { 
        this.x = x;
    }

    public void doSomethingWithX() {
        System.out.println(x);
    }
}
我们现在可以实例化一个like so
newa(newx())
最终允许内部
C
使用它


这种依赖传递模式叫什么我怎样才能避免呢?

这不是一种模式。你为什么认为应该避免?这会导致什么问题?我想这可能是一种反模式。我想避免它,因为我最终得到了一个很难遵循的大链,然后将a B传递给a的构造函数,将C传递给B的构造函数。附加值:您现在正在进行依赖项注入,使代码易于测试。