Abstract Factory
The abstract factory design pattern is merely an extension of the factory method pattern, which allows you to create objects without being concerned about the actual class of the objects being produced. The abstract factory pattern extends the factory method pattern by allowing more types of objects to be produced.

Let's start with an example first, then we will see how it eventually leads us to the abstract factory pattern.