我意识到这个问题已经被问过好几次了,但我想在我在这里研究的一个特定示例中对其进行框架化。我正在研究一个在网格上运行的有限元代码。网格在逻辑上是一个对象,在它被“构建”或构建之前,我们不能对它做任何事情。这似乎是有道理的,然后将网格参数传递给构造函数并让构造函数构建网格。在网上搜索,我看到一个普遍的观点,即这不一定是一个好主意,构造函数应该尽可能少做。
网格生成可能是一个漫长而复杂的过程。另一方面,网格在生成之前完全不可用,我会考虑它的构造。我可以将每个步骤映射为我希望客户端调用的方法,但是这些方法将始终相同,并且它们将始终使用相同的参数。即使内部结构发生变化,公共接口也极不可能发生变化。此外,客户端不应该关心网格生成细节可能是有道理的。考虑到这一点,在构造函数中完全生成网格并在之后处于准备使用状态似乎是有意义的。我还可以创建一个对客户端不透明的简单生成方法,但是为什么构造函数不能做同样的事情呢?它必须是可用的。
将这些东西放在构造函数中时,我应该注意这里是否存在隐患?