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