arrow
返回

Design pattern for reusing immutable methods in object-oriented languages

delete2026-01-01
delete0
PRE
AI
W
William Flageol *
Y
Yann‐Gaël Guéhéneuc
S
Stefan Monnier
M
Mourad Badri
DOI:10.1016/j.cola.2026.101385delete
delete原文链接
delete原文求助
delete分享
delete收藏
摘要

摘要

En 中文
函数式编程的概念日益普及,并被引入面向对象编程中。在这些概念中,不可变性是函数式编程的核心概念,为软件开发带来了优势。然而,在面向对象编程语言中引入不可变性存在一些挑战。问题:这些挑战之一在于继承概念中,非破坏性修改器的方法重写。修改器是软件运行时更新数据的必要方法。非破坏性修改器是作用于不可变对象的方法,返回新对象而非修改接收者。在继承非破坏性修改器时,简单的实现会导致代码重复并存在可扩展性问题。贡献:我们分析了一个重写非破坏性修改器的示例,讨论了挑战,并提出了一种新的设计模式作为解决方案,该模式借鉴了工厂方法模式。我们还讨论了该模式的优势和局限性,以及其在八种语言(Clojure、Common Lisp、C#、Java、Kotlin、OCaml、Rust和Scala)中的实现。最后,我们识别并讨论了影响该模式实现的主要语言特性,并提出了对Common Lisp的扩展,以展示这些特性对实现的影响。结论:我们提出的设计模式有助于减少继承非破坏性修改器的简单实现中的代码重复,并提高代码的可扩展性。然而,完全消除实现中的可扩展性问题需要使用包含函数式更新特性的语言。我们得出结论,面向对象编程语言应考虑添加函数式更新特性,以更好地支持其新的函数式编程特性。
Keyword:
Object-oriented programming
Design patterns
Functional programming
Immutability
Language features

期刊

J
Journal of Computer Languages
IF:
1.8
论文数:
28
被引数:
323

机构

C
concordia university - canada
学者数:
8.0K
论文数: 8.9K
被引数: 4
U
university of quebec trois rivieres
学者数:
1.3K
论文数: 1.2K
被引数: 1
U
university of quebec
学者数:
2.0W
论文数: 1.9W
被引数: 19
学者 查看更多机构
引用论文

引用论文

err分享
err收藏
Aspect-oriented programming
err2006-05-23
err0
PREAI
errGregor Kiczales; John Lamping; Anurag Mendhekar; Chris Maeda; Cristina Lopes; Jean-Marc Loingtier; John Irwin
err分享
err收藏
err分享
err收藏
err
IF0
err
err0
PREAI
err
err分享
err收藏
A mapping study of language features improving object-oriented design patterns
err2023-08-01
err0
PREAI
errFlageol, William; Menaud, Eloi; Gueheneuc, Yann-Gael; Badri, Mourad; Monnier, Stefan
err分享
err收藏
学者 查看更多内容