Simple factory, factory method, and abstract factory are all creational patterns in design patterns. Its main function is to help us extract the instantiation part of the object, optimize the system architecture, and enhance the scalability of the system.
This article is a summary of my study of these three modes and my understanding of the differences between them.
Simple Factory
Factory classes in the simple factory pattern generally use static methods to return different object instances based on the different parameters they receive.
It cannot be expanded without modifying the code.
Factory method
The factory method provides a factory class for each product. Different product instances are created through different factory instances.
In the same hierarchical structure, any product can be added.
Abstract Factory
Abstract factory responds to the concept of product family. For example, each automobile company may want to produce cars, trucks, and buses at the same time, so each factory must have a method for creating cars, trucks, and buses.
It was born in response to the concept of product family. It is easy to add new product lines, but it is impossible to add new products.
Summary
★In the factory pattern, the important thing is the factory class, not the product class. Product classes can be in many forms, including multiple levels of inheritance or a single class. But it should be clear that the factory mode interface will only return one type of instance. This needs to be paid attention to when designing product classes. It is best to have a parent class or a jointly implemented interface.
★Using the factory pattern, the returned instance must be created by the factory and not obtained from other objects.
★The instances returned by the factory pattern do not need to be newly created, and it is also possible to return instances created by the factory.
Differences
Simple Factory: Used to produce any product in the same level structure. (There is nothing you can do about adding new products)
Factory mode: used to produce fixed products in the same hierarchical structure. (Supports adding any product)
Abstract factory: used to produce all products of different product families. (There is nothing you can do about adding new products; adding product families is supported)
The above three factory methods have different levels of support in the two directions of hierarchical structure and product family. So consider which method should be used based on the situation.
More JAVA design patterns: Summary and differences of simple factory, factory method, and abstract factory. For related articles, please pay attention to the PHP Chinese website!