The Polymorphism Pattern:
Handles the message generated when a system event or operation takes place
assigns the responsibility for creating new class instance or object
Determine how a system handles conditional variations
Creates a convenient class