在构造函数中推断逻辑

时间:2012-05-14 06:52:52

标签: architecture constructor

在对象构造函数中推断出任何类型的函数是一种好习惯吗?例如,它是现有对象还是新对象?

我有一个类,根据使用的构造函数,它可以从数据库中提取,也可以从头开始创建。我正在使用C#,但这对问题并不重要。

2 个答案:

答案 0 :(得分:0)

我更愿意将自定义逻辑放在客户端的类中,该类用于创建实例或使用工厂方法而不是复杂逻辑http://sourcemaking.com/design_patterns/factory_method的构造函数。

答案 1 :(得分:0)

当然,调用虚方法会导致未定义的行为 - 因为在派生构造函数之前会调用它 - 而你不应该这样做。

其余的取决于。从构造函数调用的方法可能会导致副作用。例如,如果您在构造函数中订阅了一个事件,并且在构造函数结束之前调用了您的处理程序。构造函数主要用于为类成员设置初始值。

调用内部初始化方法应该没问题,但一般情况下我建议避免使用它。

如果有一些复杂的初始化逻辑,可能应该检查“Builder”模式。