Architecture 构造函数中的推理逻辑

Architecture 构造函数中的推理逻辑,architecture,constructor,Architecture,Constructor,在对象构造函数中推断任何类型的函数是一种好的实践吗?例如,它是现有对象还是新对象 我有一个类,根据使用的构造函数,它要么从DB中提取,要么从头创建。我使用C,但这对问题并不重要。我更喜欢将自定义逻辑放在客户端类中,用于创建实例或使用工厂方法,而不是复杂逻辑的构造函数。当然,调用虚拟方法会导致未定义的行为——就像在派生构造函数之前调用基构造函数一样——您不应该这样做 其余的要看情况而定。从构造函数调用的方法可能会导致副作用。例如,如果您在构造函数中订阅了一个事件,并且在构造函数结束之前调用了您的处

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


我有一个类,根据使用的构造函数,它要么从DB中提取,要么从头创建。我使用C,但这对问题并不重要。

我更喜欢将自定义逻辑放在客户端类中,用于创建实例或使用工厂方法,而不是复杂逻辑的构造函数。

当然,调用虚拟方法会导致未定义的行为——就像在派生构造函数之前调用基构造函数一样——您不应该这样做

其余的要看情况而定。从构造函数调用的方法可能会导致副作用。例如,如果您在构造函数中订阅了一个事件,并且在构造函数结束之前调用了您的处理程序。构造函数通常缩进以设置类成员的初始值

调用内部初始化方法应该可以,但一般来说,我建议避免这样做

如果有一些复杂的初始化逻辑,可能应该检查生成器模式