Creational Class Design Pattern (CCDP) delay the initiation of a class to a subclass. It deals with the problem that a client interacts with an interface to get objects, which are not created by the interface, but by its inherited classes. This can be said too that CCDP makes use of inheritance to provide its client with objects, whose initiation, representation are transparent to the clent. The pattern include Factory Method, Abstract Factory and Builder. All three patterns evolves from Factory Patterns, which captures their common features.
Factory:
To provide client with one of multiple sub-classes of a super class based on the client's input.The initiation of a product is separated from a client. Any change in the implementation of product will not affect the code of client shopper. However, it must know when and what will be created at the same time
FactoryMethod
Improves factory by separating when and what to be created. It defines an interface for creating objects, but let subclasses to decide which class to instantiate, and refers to the newly created object through a common interface. The FactoryMethod separates the time to create an object and what to create, so the process to use the product can be reused and not changed by the change of product, but it can only provides clients a type of product at a time
AbstractFactory
improves FactoryMethod by not only providing clients a family of products in according to an a standard, and offering them the chance to change standards.
Builder
make use of AbstractFactory to separate the construction process of a complex object from its parts, so the process can be reused when the parts are changed