A design pattern is a reusable design description that describes a simple and elegant solution to specific problems in object-oriented design. Design patterns capture solutions that have evolved over time, they therefore represent the experience of the development team. Design patterns are described in terms of a pattern name, the problem solved, the design solution and the consequences of applying the pattern.