Java 避免";“泄漏此信息”;同时避免大量的工厂

Java 避免";“泄漏此信息”;同时避免大量的工厂,java,constructor,factory-method,Java,Constructor,Factory Method,我有一个抽象类,AbstractClass,它最终超类了大量的final具体类a,B,C等例如,在某些情况下,有一个中间抽象类-D1和D2都扩展了AbstractD,它扩展了AbstractClass。在创建对象时,这些具体类中的每一个都需要链接到其中一个具体类的一个(且仅一个)实例:可能是同一个类,也可能是不同的类。每个混凝土类也有大量的施工人员 将其编码为: public A(String aVariable, int anotherVariable, AbstractClass objec

我有一个抽象类,
AbstractClass
,它最终超类了大量的
final
具体类
a
B
C
等例如,在某些情况下,有一个中间抽象类-
D1
D2
都扩展了
AbstractD
,它扩展了
AbstractClass
。在创建对象时,这些具体类中的每一个都需要链接到其中一个具体类的一个(且仅一个)实例:可能是同一个类,也可能是不同的类。每个混凝土类也有大量的施工人员

将其编码为:

public A(String aVariable, int anotherVariable, AbstractClass objectToBeLinked){
   //do some stuff with other variables;
   owner = objectToBeLinked;
   objectToBeLinked.addToInventory(this);
}
然后其他需要的构造函数签名会给我一个
在构造函数中泄漏这个
,虽然我知道这不一定是一个缺陷,但我想避免它-为了线程安全,也为了使用最佳实践。我能看到的最佳解决方案是实施某种形式的工厂方法:

public static void createObjectA(String aVariable, int anotherVariable, AbstractClass objectToBeLinked){
    a = new A(String aVariable, int anotherVariable, AbstractClass objectToBeLinked);
    objectToBeLinked.addToInventory(a);
}

(例如,实现可能明显不同)以确保对象创建在链接之前完成。然而,考虑到每个类都有大量的具体类和构造函数,这意味着要创建大量的工厂方法。如果这是最好的解决方案,那么就这样吧,但我想知道是否有更好的方法我没有看到。

不要使用ctor,使用
静态
工厂模式。正如建议的那样。如果有许多具有不同参数的系数;替换为生成器模式。不要使用ctor,使用
静态
工厂模式。正如建议的那样。如果有许多具有不同参数的系数;替换为生成器模式。