package main // The abstact factory pattern is a new layer of grouping to achieve a bigger composit object. // Which is used through it's interface. The idea behind grouping objects in families and grouping families is to have // big factory that can be interchangable and can grow more easily. // NOTICE: you will not likely to apply abstract factory from begining unless you know your object inventory for a specific // field is going to be large. // Objectives: Grouping related families of objects is very convenient when your object number is growing so much that // creating a unique point to get them all seems the only way to gain the flexible of runtime object creation.