我有一个名为HugeClass
的类,其中定义了公共方法addButton()
。
public class HugeClass{
public void addButton(){ etc... }
public HugeClass getHugeClass(){ etc... }
...lots of big number crunching logic...
}
有一个名为myController
的课程,会调用getHugeClass()
。
public class printController{
...
myController.getHugeClass().addButton();
}
我们的客户希望我们不在getHugeClass()
中调用printController
,因为代码很长并占用大量内存,因为它处理显示字段的逻辑前端。有更好的解决方案吗?
我正在考虑将HugeClass
扩展到printHugeClass
,然后在printController
中调用它。性能会更好,还是会一样,因为它是在调用原始HugeClass
并且必须遍历整个父类?
答案 0 :(得分:2)
addButton
需要一个正确构造的HugeClass
实例,并且你无法避免它(子类化不会产生影响)。
或者您不需要HugeClass
中包含的所有详细信息来调用addButton
,也许是时候考虑将HugeClass
拆分为较小的独立组件。
比照this post about SRP(单一责任原则)。
答案 1 :(得分:0)
这一切都取决于getHugeClass()
需要pritnController
的以下陈述。
..lots of big number crunching logic...
如果您可以避免这些陈述,那么在您覆盖HugeClass
时延长getHugeClass()
将解决您的问题。
答案 2 :(得分:0)
addButton()
取决于HugeClass
的其余部分多少钱?如果课程变得如此庞大,那么重构它并将addButton()
所需的部分移动到另一个新课程中可能是值得的。
答案 3 :(得分:0)
首先,java中的类有多大并不重要,类加载器只加载一次。您的性能问题与其他问题有关,并且发现您应该使用性能分析工具。
我的建议:如果您遇到性能问题,请不要做任何假设,它可以是任何事情。当然,除非你在静态初始化块中没有逻辑,否则它与java加载类的速度无关。