The proper use of design patterns is the art of making your system just flexible enough to deal with the problems you have today, but no more

Russ Olsen, Design Patterns in Ruby