Skip to main content
 首页 » 编程设计

python之Python 中的 `Builder` 设计模式是否已过时

2024年08月21日24落叶无声

我正在通读 this article on design patterns in Scala ,他们提出了 Builder 模式与 Java 相关的论点,因为它允许这样的代码:

CarBuilder carBuilder = new CarBuilder() 
carBuilder.setSeats(2) 
carBuilder.setSportsCar(true) 
carBuilder.setTripComputer(true) 
carBuilder.setGPS(false) 
Car car = carBuilder.build() 

与更容易混淆的形式相比:

Car car = new Car(2, true, true, false) 

他们后来表示:

In a language like Scala which lets you name arguments while passing them in, the builder pattern is mostly obsolete...

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

请您参考如下方法:

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

The Builder pattern simulates named optional parameters as found in Ada and Python.

所以您的问题的答案是强调是。无需模拟语言中固有的模式。

您可能也对这个热门话题感兴趣:Does functional programming replace GoF design patterns?