Нет. Обычно конструктор - это функция, которая автоматически вызывается языком для инициализации создаваемого объекта. Само по себе это означает, что конструктор не может предоставить функциональность фабрики «позвони мне, чтобы создать объект».
Кроме того, конструкторы обычно вызываются из выражений типа new ClassName(args)
, которые в большинстве языков определены как создающие экземпляр ClassName
, а не из класса, который наследуется от ClassName
. Таким образом, вы не можете использовать new
или конструкторы для создания экземпляров любого типа.
С другой стороны, я сказал « в большинстве языков »: некоторые, например JavaScript, позволяют возвращать все что угодно из конструктора, а другие, например Objective Caml, рассматривают конструкторы как фабрики функции.