Applying Creational Design Patterns in Java