在对象构造函数中推断出任何类型的函数是一种好习惯吗?例如,它是现有对象还是新对象?
我有一个类,根据使用的构造函数,它可以从数据库中提取,也可以从头开始创建。我正在使用C#,但这对问题并不重要。
答案 0 :(得分:0)
我更愿意将自定义逻辑放在客户端的类中,该类用于创建实例或使用工厂方法而不是复杂逻辑http://sourcemaking.com/design_patterns/factory_method的构造函数。
答案 1 :(得分:0)
当然,调用虚方法会导致未定义的行为 - 因为在派生构造函数之前会调用它 - 而你不应该这样做。
其余的取决于。从构造函数调用的方法可能会导致副作用。例如,如果您在构造函数中订阅了一个事件,并且在构造函数结束之前调用了您的处理程序。构造函数主要用于为类成员设置初始值。
调用内部初始化方法应该没问题,但一般情况下我建议避免使用它。
如果有一些复杂的初始化逻辑,可能应该检查“Builder”模式。