The Factory Method design pattern is used instead of the regular class constructor for keeping within the SOLID principle of programming, decoupling the construction of objects from the objects themselves. This has the following advantages and is useful for the following cases, among others: [2]