Structure Participants AbstractFactory declares an interface for operations that create abstract product objects. ConcreteFactory implements the operations to create concrete product objects. AbstractProduct declares an interface for a type of product object. ConcreteProduct defines a product object to be creared by the corresponding concrete factory. Code generation We have input the default values in the following form.
Users can change any values in their application-specific names for the participants in the pattern.
It makes exchanging product families easy. It promotes consistency among products. Supporting new kinds of products is difficult.