On the Interaction of Object-Oriented Design Patterns and Programming Languages
Gerald Baumgartner, Konstantin L\"aufer, Vincent F. Russo

TL;DR
This paper analyzes how object-oriented design patterns are affected by programming language limitations and proposes language constructs to better support pattern implementation, simplifying pattern descriptions and broadening accessibility.
Contribution
It introduces a set of language constructs, such as subtyping and multimethod dispatch, to improve support for design patterns in object-oriented languages.
Findings
Proposed language constructs enhance pattern implementation.
Catalog of mechanisms drawn from multiple languages.
Simplifies pattern descriptions for broader understanding.
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Logic, programming, and type systems · Model-Driven Software Engineering Techniques
