2019/05/31 by Gerald Baumgartner, Baumgartner, Gerald, Konstantin Läufer +3
Computer Science · #Advanced Software Engineering Methodologies #FOS: Computer and information sciences #Logic, programming, and type systems #Model-Driven Software Engineering Techniques #Programming Languages (cs.PL) #Software Engineering (cs.SE) #Software Engineering Research
paper · pdf · doi:10.48550/arxiv.1905.13674
openalex publication_date 2019/05/31 · openalex created_date 2025/10/24 · openalex updated_date 2026/07/28
Design patterns are distilled from many real systems to catalog common\nprogramming practice. However, some object-oriented design patterns are\ndistorted or overly complicated because of the lack of supporting programming\nlanguage constructs or mechanisms. For this paper, we have analyzed several\npublished design patterns looking for idiomatic ways of working around\nconstraints of the implementation language. From this analysis, we lay a\ngroundwork of general-purpose language constructs and mechanisms that, if\nprovided by a statically typed, object-oriented language, would better support\nthe implementation of design patterns and, transitively, benefit the\nconstruction of many real systems. In particular, our catalog of language\nconstructs includes subtyping separate from inheritance, lexically scoped\nclosure objects independent of classes, and multimethod dispatch. The proposed\nconstructs and mechanisms are not radically new, but rather are adopted from a\nvariety of languages and programming language research and combined in a new,\northogonal manner. We argue that by describing design patterns in terms of the\nproposed constructs and mechanisms, pattern descriptions become simpler and,\ntherefore, accessible to a larger number of language communities. Constructs\nand mechanisms lacking in a particular language can be implemented using\nparadigmatic idioms.\n