Abstract Factory
Abstract Factory is a greatly misunderstood design pattern. It has a notorious reputation for being very complex and bizarre. Actually, it's quite simple. If you understood the Factory Method design pattern, you'll understand this one in no time. This is because the Abstract Factory design pattern is a factory of factories. That's all there is to it. The factory is a function or class that's able to create other classes. In other words, an abstract factory is a class that wraps multiple factory methods.
You may understand this and still wonder what the use of such a design pattern may be. In the real world, the Abstract Factory design pattern is often used in frameworks and libraries that get their configuration from files. The Spring Framework is just one example of these.
To better understand how the design pattern works, let's assume we have a configuration for our server written in a YAML file:
server: ...