Abstract Factory Design Pattern In Java