{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,11]],"date-time":"2026-02-11T13:57:29Z","timestamp":1770818249175,"version":"3.50.1"},"publisher-location":"Berlin, Heidelberg","reference-count":32,"publisher":"Springer Berlin Heidelberg","isbn-type":[{"value":"9783540571209","type":"print"},{"value":"9783540479109","type":"electronic"}],"license":[{"start":{"date-parts":[[1993,1,1]],"date-time":"1993-01-01T00:00:00Z","timestamp":725846400000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[1993]]},"DOI":"10.1007\/3-540-47910-4_21","type":"book-chapter","created":{"date-parts":[[2007,8,16]],"date-time":"2007-08-16T12:13:47Z","timestamp":1187266427000},"page":"406-431","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":248,"title":["Design Patterns: Abstraction and Reuse of Object-Oriented Design"],"prefix":"10.1007","author":[{"given":"Erich","family":"Gamma","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Richard","family":"Helm","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Ralph","family":"Johnson","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"John","family":"Vlissides","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2000,8,25]]},"reference":[{"issue":"11","key":"21_CR1","doi-asserted-by":"publisher","first-page":"1351","DOI":"10.1109\/TSE.1985.231883","volume":"11","author":"B. Adelson","year":"1985","unstructured":"B. Adelson and Soloway E. The role of domain experience in software design. IEEE Transactions on Software Engineering, 11(11):1351\u20131360, 1985.","journal-title":"IEEE Transactions on Software Engineering"},{"key":"21_CR2","volume-title":"The Timeless Way of Building","author":"C. Alexander","year":"1979","unstructured":"Christopher Alexander. The Timeless Way of Building. Oxford University Press, New York, 1979."},{"key":"21_CR3","unstructured":"Association for Computing Machinery. Addendum to the Proceedings, Object-Oriented Programming Systems, Languages, and Applications Conference, Phoenix, AZ, October 1991."},{"key":"21_CR4","unstructured":"Association for Computing Machinery. Addendum to the Proceedings, Object-Oriented Programming Systems, Languages, and Applications Conference, Vancouver, British Columbia, October 1992."},{"key":"21_CR5","doi-asserted-by":"crossref","unstructured":"Kent Beck and Ward Cunningham. A laboratory for teaching object-oriented thinking. In Object-Oriented Programming Systems, Languages, and Applications Conference Proceedings, pages 1\u20136, New Orleans, LA, October 1989.","DOI":"10.1145\/74877.74879"},{"issue":"9","key":"21_CR6","doi-asserted-by":"publisher","first-page":"152","DOI":"10.1145\/130994.131006","volume":"35","author":"P. Coad","year":"1992","unstructured":"Peter Coad. Object-oriented patterns. Communications of the ACM, 35(9):152\u2013159, September 1992.","journal-title":"Communications of the ACM"},{"key":"21_CR7","volume-title":"Advanced C++ Programming Styles and Idioms","author":"J. O. Coplien","year":"1992","unstructured":"James O. Coplien. Advanced C++ Programming Styles and Idioms. Addison-Wesley, Reading, Massechusetts, 1992."},{"key":"21_CR8","unstructured":"Ward Cunningham and Kent Beck. Constructing abstractions for object-oriented applications. Technical Report CR-87-25, Computer Research Laboratory, Tektronix, Inc., 1987."},{"key":"21_CR9","doi-asserted-by":"crossref","unstructured":"Bill Curtis. Cognitive issues in reusing software artifacts. In Ted J. Biggerstaff and Alan J. Perlis, editors, Software Reusability, Volume II, pages 269\u2013287. Addison-Wesley, 1989.","DOI":"10.1145\/75722.75735"},{"key":"21_CR10","doi-asserted-by":"crossref","unstructured":"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\u2013178, Vancouver, British Columbia, October 1992.","DOI":"10.1145\/141936.141951"},{"key":"21_CR11","doi-asserted-by":"crossref","DOI":"10.1007\/978-3-642-77838-4","volume-title":"Objektorientierte Software-Entwicklung am Beispiel von ET+ +: Design-Muster, Klassenbibliothek, Werkzeuge","author":"E. Gamma","year":"1992","unstructured":"Erich Gamma. Objektorientierte Software-Entwicklung am Beispiel von ET+ +: Design-Muster, Klassenbibliothek, Werkzeuge. Springer-Verlag, Berlin, 1992."},{"key":"21_CR12","unstructured":"Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. A catalog of object-oriented design patterns. Technical Report in preparation, IBM Research Division, 1992."},{"key":"21_CR13","doi-asserted-by":"crossref","unstructured":"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\u201397, 1985.","DOI":"10.1109\/MS.1985.230059"},{"key":"21_CR14","unstructured":"Richard Helm, Tien Huynh, Catherine Lassez, and Kim Marriott. A linear constraint technology for user interfaces. In Graphics Interface, pages 301\u2013309, Vancouver, British Columbia, 1992."},{"key":"21_CR15","unstructured":"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\u201322, Champ\u00e9ry, Switzerland, October 1992. Also available as IBM Research Division Technical Report RC 18524 (79392)."},{"key":"21_CR16","doi-asserted-by":"crossref","unstructured":"Ralph Johnson. Documenting frameworks using patterns. In Object-Oriented Programming Systems, Languages, and Applications Conference Proceedings, pages 63\u201376, Vancouver, BC, October 1992.","DOI":"10.1145\/141936.141943"},{"key":"21_CR17","doi-asserted-by":"crossref","unstructured":"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\u2014Concepts, Tools, Techniques. Proceedings of the International Workshop on Code Generation, pages 255\u2013274, Dagstuhl, Germany, 1992. Springer-Verlag.","DOI":"10.1007\/978-1-4471-3501-2_14"},{"key":"21_CR18","unstructured":"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."},{"issue":"3","key":"21_CR19","first-page":"26","volume":"1","author":"G. E. Krasner","year":"1988","unstructured":"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\u201349, August\/September 1988.","journal-title":"Journal of Object-Oriented Programming"},{"key":"21_CR20","doi-asserted-by":"crossref","unstructured":"Charles W. Krueger. Software reuse. ACM Computing Surveys, 24(2), June 1992.","DOI":"10.1145\/130844.130856"},{"key":"21_CR21","unstructured":"Mark A. Linton. Encapsulating a C++ library. In Proceedings of the 1992 USENIX C++ Conference, pages 57\u201366, Portland, OR, August 1992."},{"issue":"2","key":"21_CR22","doi-asserted-by":"publisher","first-page":"8","DOI":"10.1109\/2.19829","volume":"22","author":"M. A. Linton","year":"1989","unstructured":"Mark A. Linton, John M. Vlissides, and Paul R. Calder. Composing user interfaces with InterViews. Computer, 22(2):8\u201322, February 1989.","journal-title":"Computer"},{"key":"21_CR23","unstructured":"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\u2013161, Marist College, Poughkeepsie, NY, September 1990."},{"key":"21_CR24","doi-asserted-by":"crossref","unstructured":"Charles Rich and Richard C. Waters. Formalizing reusable software components in the programmer\u2019s apprentice. In Ted J. Biggerstaff and Alan J. Perlis, editors, Software Reusability, Volume II, pages 313\u2013343. Addison-Wesley, 1989.","DOI":"10.1145\/75722.75737"},{"key":"21_CR25","volume-title":"Object-Oriented Modeling and Design","author":"J. Rumbaugh","year":"1991","unstructured":"James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy, and William Lorenson. Object-Oriented Modeling and Design. Prentice Hall, Englewood Cliffs, New Jersey, 1991."},{"key":"21_CR26","doi-asserted-by":"crossref","unstructured":"Elliot Soloway and Kate Ehrlich. Empirical studies of programming knowledge. IEEE Transactions on Software Engineering, 10(5), September 1984.","DOI":"10.1109\/TSE.1984.5010283"},{"issue":"7","key":"21_CR27","doi-asserted-by":"publisher","first-page":"624","DOI":"10.1145\/6138.6145","volume":"29","author":"J. C. Spohrer","year":"1992","unstructured":"James C. Spohrer and Elliot Soloway. Novice mistakes: Are the folk wisdoms correct? Communications of the ACM, 29(7):624\u2013632, July 1992.","journal-title":"Communications of the ACM"},{"key":"21_CR28","unstructured":"ParcPlace Systems. ParcPlace Systems, Objectworks\/Smalltalk Release 4 Users Guide. Mountain View, California, 1990."},{"key":"21_CR29","doi-asserted-by":"crossref","unstructured":"David Ungar and Randall B. Smith. Self: The power of simplicity. In Object-Oriented Programming Systems, Languages, and Applications Conference Proceedings, pages 227\u2013242, Orlando, Florida, October 1987.","DOI":"10.1145\/38765.38828"},{"issue":"3","key":"21_CR30","doi-asserted-by":"publisher","first-page":"237","DOI":"10.1145\/98188.98197","volume":"8","author":"J. M. Vlissides","year":"1990","unstructured":"John M. Vlissides and Mark A. Linton. Unidraw: A framework for building domain-specific graphical editors. ACM Transactions on Information Systems, 8(3):237\u2013268, July 1990.","journal-title":"ACM Transactions on Information Systems"},{"key":"21_CR31","doi-asserted-by":"crossref","unstructured":"Andr\u00e9 Weinand, Erich Gamma, and Rudolf Marty. ET++\u2014An object-oriented application framework in C++. In Object-Oriented Programming Systems, Languages, and Applications Conference Proceedings, pages 46\u201357, San Diego, CA, September 1988.","DOI":"10.1145\/62083.62089"},{"issue":"9","key":"21_CR32","doi-asserted-by":"publisher","first-page":"104","DOI":"10.1145\/83880.84526","volume":"33","author":"R. Wirfs-Brock","year":"1990","unstructured":"Rebecca Wirfs-Brock and Ralph E. Johnson. A survey of current research in object-oriented design. Communications of the ACM, 33(9):104\u2013124, 1990.","journal-title":"Communications of the ACM"}],"container-title":["Lecture Notes in Computer Science","ECOOP\u2019 93 \u2014 Object-Oriented Programming"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/3-540-47910-4_21","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,1,20]],"date-time":"2025-01-20T11:42:04Z","timestamp":1737373324000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/3-540-47910-4_21"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1993]]},"ISBN":["9783540571209","9783540479109"],"references-count":32,"URL":"https:\/\/doi.org\/10.1007\/3-540-47910-4_21","relation":{},"ISSN":["0302-9743"],"issn-type":[{"value":"0302-9743","type":"print"}],"subject":[],"published":{"date-parts":[[1993]]},"assertion":[{"value":"25 August 2000","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}}]}}