我正在构建可变数量的KlasseA对象和相应数量的KlasseB对象。
KlasseA依赖于ClassZ和ClassY,KlasseB依赖于ClassZ,ClassY和KlasseA。 KlasseA& KlasseB必须使用相同的ClassY实例,因为它具有必须由两个类使用的外部连接。但是,当我创建另一对KlasseA& KlasseB对象都必须使用ClassY的新实例,因为它们可能不会使用与其他2 KlasseA& KlasseB对象。
到目前为止,我已经使用Guice来注入依赖项,但是由于Guice要么总是创建一个新的ClassY实例,要么只创建一个实例,如果我将它作为单例,它实际上并不像我想的那样工作。
现在我想知道是否有可能与Guice这样做,或者我是否应该采取不同的方法,例如
@Inject
public KlasseA(ClassZ classZ, ClassY classY)
{
classZ = classZ;
classY = classY;
}
@Inject
public KlasseB(ClassZ classZ, KlasseA klasseA)
{
classZ = classZ;
classY = klasseA.getClassY();
klasseA = klasseA;
}
这种方式肯定有效,但它有点像一个小黑客,所以我想知道是否有人有更好的解决方案或鼓舞人心的东西。
答案 0 :(得分:0)
显然,通过使用工厂可以实现干净,符合Guice的解决方案
@Inject
public KlasseA(ClassZ classZ, ClassY classY)
{
classZ = classZ;
classY = classY;
}
@Inject
public KlasseB(ClassZ classZ, KlasseA klasseA, @Assisted ClassYFactory classyFactory)
{
classZ = classZ;
classY = classyFactory.create(klasseA);
klasseA = klasseA;
}
所以仍然是Guice处理依赖。