我有一个抽象类AbstractClass
,最终超级大量final
具体类A
,B
,C
等等。&#34 ;最终"在某些情况下,有一个中间抽象类 - D1
和D2
都扩展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);
}
(例如 - 实现可能明显不同)以确保在链接之前完成对象创建。但是,考虑到大量的具体类和每个都有大量的构造函数,这意味着要创建大量的工厂方法。如果这是最好的解决方案,那么就这样吧,但我想知道是否有更好的方法我没有看到。