我有一个实例化的对象 - 它非常漂亮,因为它还扩展了一个超类并在构造函数中做了一些事情 - 实际上所有重要的参数和方法调用都在构造函数中处理。
在此之后,我再也没有再次调用该对象 - 我也没有将它传递给任何其他对象 - 在实例化后它会完成它并且一切都很好。这是错误的方法吗?
答案 0 :(得分:6)
是的,在构造函数中做大量工作通常是个坏主意。
您可以通过静态方法执行此操作吗?静态方法可以创建超类的实例,然后执行它需要的任何操作。这种方法的唯一问题是,如果超类在其构造函数中调用虚方法,但这本身就是代码味道...
答案 1 :(得分:3)
它可能是来自超类的气味,而不是子类。
为什么你需要这样做?超类中是否只有通过构造函数可公开访问的功能?如果是这样,那么您可能需要创建一个实例来访问该功能。但是将这种行为隐藏在普通方法而不是子类构造函数之后可能会更好。
但这仍然不如修复超类那么好。
答案 2 :(得分:2)
对象应该存在的目的。构造函数只是一个准备对象的工具,因此它可以在创建后根据需要工作。如果您不使用该对象,则无需创建它。
创建不必要的对象会消耗内存并使垃圾收集器做更多工作,因此您应该考虑重写代码(可能使用静态方法,因为它已经被建议)。