Definition
Design Patterns are an essential support of Agile Development. The enable the emergent design to emerge in Agile projects. Previously thought of as ‘Design Up-Front’ technique, they are often used in Agile projects to determine variations that are discovered over time. It is important for development organizations to be critical of the systems they create, and make them invulnerable to business priorities, technologies, market pressures and changing requirements.
A Design Pattern offers systematic naming, motivation and explanation of general design problems in systems that are object-oriented. It offers a description of the problem, the solution and when to apply it. It also gives hints of implementation and requisite examples.
Further Reading
- “Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley Professional Computing Series)” (book), by Erich Gamma