Abstract Factory Design Pattern Explanation