返回
Design pattern for reusing immutable methods in object-oriented languages
DOI:10.1016/j.cola.2026.101385.png)
摘要
En 中文
函数式编程的概念日益普及,并被引入面向对象编程中。在这些概念中,不可变性是函数式编程的核心概念,为软件开发带来了优势。然而,在面向对象编程语言中引入不可变性存在一些挑战。问题:这些挑战之一在于继承概念中,非破坏性修改器的方法重写。修改器是软件运行时更新数据的必要方法。非破坏性修改器是作用于不可变对象的方法,返回新对象而非修改接收者。在继承非破坏性修改器时,简单的实现会导致代码重复并存在可扩展性问题。贡献:我们分析了一个重写非破坏性修改器的示例,讨论了挑战,并提出了一种新的设计模式作为解决方案,该模式借鉴了工厂方法模式。我们还讨论了该模式的优势和局限性,以及其在八种语言(Clojure、Common Lisp、C#、Java、Kotlin、OCaml、Rust和Scala)中的实现。最后,我们识别并讨论了影响该模式实现的主要语言特性,并提出了对Common Lisp的扩展,以展示这些特性对实现的影响。结论:我们提出的设计模式有助于减少继承非破坏性修改器的简单实现中的代码重复,并提高代码的可扩展性。然而,完全消除实现中的可扩展性问题需要使用包含函数式更新特性的语言。我们得出结论,面向对象编程语言应考虑添加函数式更新特性,以更好地支持其新的函数式编程特性。
Keyword:
Object-oriented programming
Design patterns
Functional programming
Immutability
Language features
期刊
J
IF:
1.8
论文数:
28
被引数:
323
机构
引用论文
On the Positive Effect of Reactive Programming on Software Comprehension: An Empirical Study反应式编程对软件理解的积极影响: 一项实证研究
Code smells and refactoring: A tertiary systematic review of challenges and observations代码气味和重构: 挑战和观察的三级系统回顾
Agent design pattern catalogue: A collection of architectural patterns for foundation model based agents代理设计模式目录: 基于基础模型的代理的体系结构模式集合

