The story of Steve that follows helps describe Design Patterns in a real-world context. I'm hoping that you're not too familiar with this story!
Steve works at a large insurance firm. His most recent task was developing a way to show customer information to the call center representatives over a web interface. He designed a complex system that would allow the reps to search for a customer, enter call logs, update customer coverage information, and process payments. The system went into place smoothly, minus the few bumps and hiccups that a new installation in a production environment always runs into. Steve is happy, relaxed, and ready to sit back in the break room sipping his free coffee.
Overnight, the insurance company triples in size from its most recent investment. Not only is Steve called back to work on providing new scalability and enhancements to the call center software but there has also been buzz about adding some new features to the corporate site to support the new acquisition's customers. Steve's department is also increased to include two new developers, Andy and Jason.
The news comes down from the vice president that the corporate site needs to allow customers to process their payments after they have completed a successful, secure user log in. Additionally, the system needs to show how many times the customer has called in to the call center. Finally, it needs to show an audit log of every change the call ...