The factory method design pattern exists in order to encapsulate an actual class instantiation. It simply provides an interface to create an object, and then the subclasses of the factory decide which concrete class to instantiate. This design pattern could become useful in cases where we want to create different objects during the runtime of the application. This design pattern is also helpful when object creation would otherwise require extra parameters to be passed by the developer.
Everything will become clearer with an example, and we will provide one in the following subsections.