Abstract Factory pattern is an extension of Factory pattern where even the factory is abstracted out. In factory pattern you just Abstract out on the type of object you want to create thus by creating a factory that can provide a similar object set like in our example the Animals in Animal’s kingdom. But what if we need to create multiple objects that our in different subsets. For example, in Animal’s kingdom there are not just animals that can roam, what about Birds, Reptiles or Water Animals? They all cannot be a part of animal set which only implements roam method.