Implementation details of creating different object should not be exposed out. What kind of class will help to achive this?
Facade pattern
Specialization pattern
Value List Iterator pattern
Factory pattern
None of the above