Theory and coding example
Run code example: bash run.sh <file_name>(default: Main)
Provide a solution to create instances and handle hidden logic instead of creating instances directly using new keyword. This helps make the program more flexible in determining which instances need to be created in different cases.
Related to classes and the components of objects. It is used to establish, define the relationship between them. The bigger the system, the more important the pattern becomes.
Concerned with algorithms and the assignment of responsibilities between objects. They don't focus on the structure of classes, but on how objects communicate and collaborate to perform a task that no single object can carry out alone.