避免"泄漏这个"同时避免大量工厂

时间:2016-10-14 13:55:57

标签: java constructor factory-method

我有一个抽象类AbstractClass,最终超级大量final具体类ABC等等。&#34 ;最终"在某些情况下,有一个中间抽象类 - D1D2都扩展AbstractD,例如扩展AbstractClass。在创建对象时,每个具体类都需要链接到其中一个具体类的一个(并且只有一个)实例:可能是同一个类,可能是另一个类。每个具体类也有大量的构造函数。

将其编码为:

public A(String aVariable, int anotherVariable, AbstractClass objectToBeLinked){
   //do some stuff with other variables;
   owner = objectToBeLinked;
   objectToBeLinked.addToInventory(this);
}

然后根据需要的其他构造函数签名会给我一个Leaking this in Constructor虽然我明白那不是必然一个缺陷,但我想避免它 - 为了线程安全而且只是使用最佳实践。我能看到的最佳解决方案是实现某种形式的工厂方法:

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

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

1 个答案:

答案 0 :(得分:0)

这些天继承是旧帽子。通常使用组合而不是继承更好。有关示例,请参阅here