(I'm noding the homework here or something... or doing the homework by noding... wellwell...)

In object-oriented analysis and design, a design pattern is a way of forming a class structure. These patterns are based on former experiences with the same structures.

Basically, over time people have learned to make efficient OO designs the same way over and over again. These methods have later been formalised to the form that makes sharing them easy.

Good examples of design patterns include Proxy, Model-View-Controller, Observer and Visitor.

A good resource on design patterns is at <URL:http://www.hillside.net/patterns/>.