The Factory pattern is a creational design pattern used in software development to encapsulate the processes involved in the creation of objects. The factory method pattern is an Object-oriented design pattern. In Software engineering, a design pattern is a general reusable solution to a commonly occurring problem in Software design.
The creation of an object often requires complex processes not appropriate to include within a composing object. The object's creation may lead to a significant duplication of code, may require information not accessible to the composing object, may not provide a sufficient level of abstraction, or may otherwise not be part of the composing object's concerns. In Computer science, a concern is a particular set of behaviors needed by a Computer program, the conceptual sections
Some of the processes required in the creation of an object include determining which object to create, managing the lifetime of the object, and managing specialized build-up and tear-down concerns of the object.
Use the Factory pattern when
The abstract factory pattern is similar to the factory pattern, but has the added intent of providing an interface to a factory purposed for the creation of families of related objects in order to enable variations of the factory to be used interchangeably. A software design pattern, the Abstract Factory Pattern provides a way to encapsulate a group of individual factories that have a common theme The abstract factory pattern is a compound pattern incorporating the use of the factory pattern and the interface pattern. Interface generally refers to an abstraction that an entity provides of itself to the outside
The factory method pattern is also concerned with the encapsulation of object creation details, but has the intent of providing an interface which defers the creation of objects to subclasses. The factory method pattern is an Object-oriented design pattern. The factory method pattern is also a compound pattern which incorporates the use of the Factory pattern and the interface pattern. Interface generally refers to an abstraction that an entity provides of itself to the outside
The builder pattern is also concerned with the encapsulation of object creation details, but has the intent of abstracting the steps involved in the construction process as opposed to encapsulating the entire creation process in one step. The Builder Pattern is a software design pattern. The intention is to separate the construction of a complex object from its representation so that the same construction process The factory pattern may encapsulate use of the builder pattern internally as part of the object creation process.