Design Patterns: Abstraction and Reuse of Object-Oriented Design

  • Erich Gamma
  • Richard Helm
  • Ralph Johnson
  • John Vlissides
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 707)

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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    B. Adelson and Soloway E. The role of domain experience in software design. IEEE Transactions on Software Engineering, 11(11):1351–1360, 1985.CrossRefGoogle Scholar
  2. 2.
    Christopher Alexander. The Timeless Way of Building. Oxford University Press, New York, 1979.Google Scholar
  3. 3.
    Association for Computing Machinery. Addendum to the Proceedings, Object-Oriented Programming Systems, Languages, and Applications Conference, Phoenix, AZ, October 1991.Google Scholar
  4. 4.
    Association for Computing Machinery. Addendum to the Proceedings, Object-Oriented Programming Systems, Languages, and Applications Conference, Vancouver, British Columbia, October 1992.Google Scholar
  5. 5.
    Kent Beck and Ward Cunningham. A laboratory for teaching object-oriented thinking. In Object-Oriented Programming Systems, Languages, and Applications Conference Proceedings, pages 1–6, New Orleans, LA, October 1989.Google Scholar
  6. 6.
    Peter Coad. Object-oriented patterns. Communications of the ACM, 35(9):152–159, September 1992.CrossRefGoogle Scholar
  7. 7.
    James O. Coplien. Advanced C++ Programming Styles and Idioms. Addison-Wesley, Reading, Massechusetts, 1992.Google Scholar
  8. 8.
    Ward Cunningham and Kent Beck. Constructing abstractions for object-oriented applications. Technical Report CR-87-25, Computer Research Laboratory, Tektronix, Inc., 1987.Google Scholar
  9. 9.
    Bill Curtis. Cognitive issues in reusing software artifacts. In Ted J. Biggerstaff and Alan J. Perlis, editors, Software Reusability, Volume II, pages 269–287. Addison-Wesley, 1989.Google Scholar
  10. 10.
    Thomas Eggenschwiler and Erich Gamma. The ET++SwapsManager: Using object technology in the financial engineering domain. In Object-Oriented Programming Systems, Languages, and Applications Conference Proceedings, pages 166–178, Vancouver, British Columbia, October 1992.Google Scholar
  11. 11.
    Erich Gamma. Objektorientierte Software-Entwicklung am Beispiel von ET+ +: Design-Muster, Klassenbibliothek, Werkzeuge. Springer-Verlag, Berlin, 1992.Google Scholar
  12. 12.
    Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. A catalog of object-oriented design patterns. Technical Report in preparation, IBM Research Division, 1992.Google Scholar
  13. 13.
    Mehdi T. Harandi and Frank H. Young. Software design using reusable algorithm abstraction. In In Proc. 2nd IEEE/BCS Gonf. on Software Engineering, pages 94–97, 1985.Google Scholar
  14. 14.
    Richard Helm, Tien Huynh, Catherine Lassez, and Kim Marriott. A linear constraint technology for user interfaces. In Graphics Interface, pages 301–309, Vancouver, British Columbia, 1992.Google Scholar
  15. 15.
    Richard Helm, Tien Huynh, Kim Marriott, and John Vlissides. An object-oriented architecture for constraint-based graphical editing. In Proceedings of the Third Eurographics Workshop on Object-Oriented Graphics, pages 1–22, Champéry, Switzerland, October 1992. Also available as IBM Research Division Technical Report RC 18524 (79392).Google Scholar
  16. 16.
    Ralph Johnson. Documenting frameworks using patterns. In Object-Oriented Programming Systems, Languages, and Applications Conference Proceedings, pages 63–76, Vancouver, BC, October 1992.Google Scholar
  17. 17.
    Ralph E. Johnson, Carl McConnell, and J. Michael Lake. The RTL system: A framework for code optimization. In Robert Giegerich and Susan L. Graham, editors, Code Generation—Concepts, Tools, Techniques. Proceedings of the International Workshop on Code Generation, pages 255–274, Dagstuhl, Germany, 1992. Springer-Verlag.Google Scholar
  18. 18.
    S. Katz, C.A. Richter, and K.-S. The. Paris: A system for reusing partially interpreted schemas. In Proc. of the Ninth International Conference on Software Engineering, 1987.Google Scholar
  19. 19.
    Glenn E. Krasner and Stephen T. Pope. A cookbook for using the model-view controller user interface paradigm in Smalltalk-80. Journal of Object-Oriented Programming, 1(3):26–49, August/September 1988.Google Scholar
  20. 20.
    Charles W. Krueger. Software reuse. ACM Computing Surveys, 24(2), June 1992.Google Scholar
  21. 21.
    Mark A. Linton. Encapsulating a C++ library. In Proceedings of the 1992 USENIX C++ Conference, pages 57–66, Portland, OR, August 1992.Google Scholar
  22. 22.
    Mark A. Linton, John M. Vlissides, and Paul R. Calder. Composing user interfaces with InterViews. Computer, 22(2):8–22, February 1989.CrossRefGoogle Scholar
  23. 23.
    William F. Opdyke and Ralph E. Johnson. Refactoring: An aid in designing application frameworks and evolving object-oriented systems. In SOOPPA Conference Proceedings, pages 145–161, Marist College, Poughkeepsie, NY, September 1990.Google Scholar
  24. 24.
    Charles Rich and Richard C. Waters. Formalizing reusable software components in the programmer’s apprentice. In Ted J. Biggerstaff and Alan J. Perlis, editors, Software Reusability, Volume II, pages 313–343. Addison-Wesley, 1989.Google Scholar
  25. 25.
    James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy, and William Lorenson. Object-Oriented Modeling and Design. Prentice Hall, Englewood Cliffs, New Jersey, 1991.Google Scholar
  26. 26.
    Elliot Soloway and Kate Ehrlich. Empirical studies of programming knowledge. IEEE Transactions on Software Engineering, 10(5), September 1984.Google Scholar
  27. 27.
    James C. Spohrer and Elliot Soloway. Novice mistakes: Are the folk wisdoms correct? Communications of the ACM, 29(7):624–632, July 1992.CrossRefGoogle Scholar
  28. 28.
    ParcPlace Systems. ParcPlace Systems, Objectworks/Smalltalk Release 4 Users Guide. Mountain View, California, 1990.Google Scholar
  29. 29.
    David Ungar and Randall B. Smith. Self: The power of simplicity. In Object-Oriented Programming Systems, Languages, and Applications Conference Proceedings, pages 227–242, Orlando, Florida, October 1987.Google Scholar
  30. 30.
    John M. Vlissides and Mark A. Linton. Unidraw: A framework for building domain-specific graphical editors. ACM Transactions on Information Systems, 8(3):237–268, July 1990.CrossRefGoogle Scholar
  31. 31.
    André Weinand, Erich Gamma, and Rudolf Marty. ET++—An object-oriented application framework in C++. In Object-Oriented Programming Systems, Languages, and Applications Conference Proceedings, pages 46–57, San Diego, CA, September 1988.Google Scholar
  32. 32.
    Rebecca Wirfs-Brock and Ralph E. Johnson. A survey of current research in object-oriented design. Communications of the ACM, 33(9):104–124, 1990.CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1993

Authors and Affiliations

  • Erich Gamma
    • 1
  • Richard Helm
    • 2
  • Ralph Johnson
    • 3
  • John Vlissides
    • 2
  1. 1.Taligent, Inc.CupertinoUSA
  2. 2.I.B.M. Thomas J. Watson Research CenterYorktown HeightsUSA
  3. 3.Department of Computer ScienceUniversity of Illinois at Urbana-ChampaignUrbanaUSA

Personalised recommendations