Skip to main content
Article
On the Interaction of Object-Oriented Design Patterns and Programming Languages
Department of Computer Science Technical Reports
  • Gerald Baumgartner, Louisiana State University at Baton Rouge
  • Konstantin Läufer, Loyola University Chicago
  • Vincent F Russo, InCrowd, Inc.
Document Type
Technical Report
Publication Date
2-29-1996
Publisher Name
Purdue University
Abstract

Design patterns are distilled from many real systems to catalog common programming practice. However, some object-oriented design patterns are distorted or overly complicated because of the lack of supporting programming language constructs or mechanisms. For this paper, we have analyzed several published design patterns looking for idiomatic ways of working around constraints of the implementation language. From this analysis, we lay a groundwork of general-purpose language constructs and mechanisms that, if provided by a statically typed, object-oriented language, would better support the implementation of design patterns and, transitively, benefit the construction of many real systems. In particular, our catalog of language constructs includes subtyping separate from inheritance, lexically scoped closure objects independent of classes, and multimethod dispatch. The proposed constructs and mechanisms are not radically new, but rather are adopted from a variety of languages and programming language research and combined in a new, orthogonal manner. We argue that by describing design patterns in terms of the proposed constructs and mechanisms, pattern descriptions become simpler and, therefore, accessible to a larger number of language communities. Constructs and mechanisms lacking in a particular language can be implemented using paradigmatic idioms.

Identifier
Report Number 96-020
Creative Commons License
Creative Commons Attribution 4.0 International
Citation Information
Gerald Baumgartner, Konstantin Läufer, and Vincent F. Russo. On the interaction of object-oriented design patterns and programming languages. Technical Report 96-020, Department of Computer Science, Purdue University, 1996.