Python中的`Builder`设计模式是否过时了?

Sea*_*nka 2 python design-patterns builder

我正在阅读这篇关于 Scala 设计模式的文章,他们提出了 Builder 模式与 Java 相关的论点,因为它允许使用以下代码:

CarBuilder carBuilder = new CarBuilder()
carBuilder.setSeats(2)
carBuilder.setSportsCar(true)
carBuilder.setTripComputer(true)
carBuilder.setGPS(false)
Car car = carBuilder.build()
Run Code Online (Sandbox Code Playgroud)

与更容易混淆的形式:

Car car = new Car(2, true, true, false)
Run Code Online (Sandbox Code Playgroud)

他们后来表示:

在像 Scala 这样允许你在传入参数时命名参数的语言中,构建器模式大多已经过时......

这是否与 Python 类似,因为您可以在任何调用中命名关键字参数,或者这种设计模式是否有一些合理的应用?

jac*_*646 5

可以在Effective Java一书中找到权威答案。第 2 章是 Josh Bloch 著名的 Java Builder 模式的起源。在第 15 页,它指出,

Builder 模式模拟了 Ada 和 Python 中的命名可选参数

所以你的问题的答案是肯定的。无需模拟语言中本机存在的模式。

您可能还对这个热门话题感兴趣:函数式编程是否取代了 GoF 设计模式?