Design patterns: abstraction and reuse of object-oriented design

  • Authors:
  • Erich Gamma;Richard Helm;Ralph Johnson;John Vlissides

  • Affiliations:
  • Taligent, Inc., 10725 N. De Ansa Blvd., Cupertino, CA;I.B.M. Thomas J. Watson Research Center, P.O. Box 704, Yorktown Heights, NY;Department of Computer Science, University of Illinois at Urbana-Champaign, 1034 W. Springfield Ave., Urbana, IL;I.B.M. Thomas J. Watson Research Center, P.O. Box 704, Yorktown Heights, NY

  • Venue:
  • Software pioneers
  • Year:
  • 2002

Quantified Score

Hi-index 0.00

Visualization

Abstract

We propose design patterns as a new mechanism for expressing object-oriented design experience. Design patterns identify, name, and abstract common themes in object-oriented design. They capture the intent behind a design by identifying objects, their collaborations, and the distribution of responsibilities. Design patterns play many roles in the object-oriented development process: they provide a common vocabulary for design, they reduce system complexity by naming and defining abstractions, they constitute a base of experience for building reusable software, and they act as building blocks from which more complex designs can be built. Design patterns can be considered reusable micro-architectures that contribute to an overall system architecture. We describe how to express and organize design patterns and introduce a catalog of design patterns. We also describe our experience in applying design patterns to the design of object-oriented systems.