Skip to main content

Design Patterns: Abstraction and Reuse of Object-Oriented Design

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((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.

Work performed while at UBILAB, Union Bank of Switzerland, Zurich, Switzerland.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. B. Adelson and Soloway E. The role of domain experience in software design. IEEE Transactions on Software Engineering, 11(11):1351–1360, 1985.

    Article  Google Scholar 

  2. Christopher Alexander. The Timeless Way of Building. Oxford University Press, New York, 1979.

    Google Scholar 

  3. Association for Computing Machinery. Addendum to the Proceedings, Object-Oriented Programming Systems, Languages, and Applications Conference, Phoenix, AZ, October 1991.

    Google Scholar 

  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. 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. Peter Coad. Object-oriented patterns. Communications of the ACM, 35(9):152–159, September 1992.

    Article  Google Scholar 

  7. James O. Coplien. Advanced C++ Programming Styles and Idioms. Addison-Wesley, Reading, Massechusetts, 1992.

    Google Scholar 

  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. 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. 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. Erich Gamma. Objektorientierte Software-Entwicklung am Beispiel von ET+ +: Design-Muster, Klassenbibliothek, Werkzeuge. Springer-Verlag, Berlin, 1992.

    Google Scholar 

  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. 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. 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. 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. 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. 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. 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. 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. Charles W. Krueger. Software reuse. ACM Computing Surveys, 24(2), June 1992.

    Google Scholar 

  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. Mark A. Linton, John M. Vlissides, and Paul R. Calder. Composing user interfaces with InterViews. Computer, 22(2):8–22, February 1989.

    Article  Google Scholar 

  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. 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. 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. Elliot Soloway and Kate Ehrlich. Empirical studies of programming knowledge. IEEE Transactions on Software Engineering, 10(5), September 1984.

    Google Scholar 

  27. James C. Spohrer and Elliot Soloway. Novice mistakes: Are the folk wisdoms correct? Communications of the ACM, 29(7):624–632, July 1992.

    Article  Google Scholar 

  28. ParcPlace Systems. ParcPlace Systems, Objectworks/Smalltalk Release 4 Users Guide. Mountain View, California, 1990.

    Google Scholar 

  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. 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.

    Article  Google Scholar 

  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. 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.

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 1993 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Gamma, E., Helm, R., Johnson, R., Vlissides, J. (1993). Design Patterns: Abstraction and Reuse of Object-Oriented Design. In: Nierstrasz, O.M. (eds) ECOOP’ 93 — Object-Oriented Programming. ECOOP 1993. Lecture Notes in Computer Science, vol 707. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-47910-4_21

Download citation

  • DOI: https://doi.org/10.1007/3-540-47910-4_21

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-57120-9

  • Online ISBN: 978-3-540-47910-9

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics