Design Patterns #4: Factories