A design pattern in software engineering, where a method returns objects of a varying prototype or class from some method call, which is assumed to be ''new''.
"The factory pattern is useful when the exact types of the objects cannot be determined beforehand and must be determined at runtime."