Abstract Factory Design Pattern Java