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,使用静态工厂模式。正如建议的那样。如果有许多具有不同参数的系数;替换为生成器模式。