命名参数vs类型安全构建器模式

时间:2014-02-19 23:15:49

标签: scala

我是一个scala新手,我想知道,如果构建器模式,如http://blog.rafaelferreira.net/2008/07/type-safe-builder-pattern-in-scala.html中描述的那样 在scala> = 2.8。

中有一些用法

使用命名参数和默认参数,我可以声明哪些参数是必需的(通过不给它们默认值),我可以按我想要的任何顺序传递构造函数参数(通过使用命名参数)。

那么拥有建设者有什么好处吗?

2 个答案:

答案 0 :(得分:1)

构建器模式允许部分构造的对象(根据某些任意条件)。

例如,您可能有一个在启动时部分初始化的对象,但在使用之前需要进一步参数化。

不可能在单个参数列表(或其列表)中表达,除非其中一个args捕获部分配置(哪种类型会使实用程序失效)。

答案 1 :(得分:0)

我想要构建器模式的原因:

  1. 一致性,因为构造函数是方法和方法可以用函数转换。

    • 严格的功能 - >部分应用功能或咖喱功能
    • 严格的方法 - > N / A(在Scala中不允许,您需要将其转换为函数但丢失参数信息。)
    • 严格的课程 - >与上面相同,或使用构建器模式来部分应用构造函数。
    • 和部分应用类型,例如类型State [S,A] = StateT [Eval,S,A]
  2. 你喜欢部分应用函数吗,对于函数式编程,你通常会传递函数,并且你不希望总是传递它伴随它的部分参数,所以你部分应用它并传递一个值。
    给定1,方法和类应该相同。

  3. 将建筑分隔到不同的地方。 (类似于2.)
  4. 缓存计算。检查此答案https://stackoverflow.com/a/4916606/2130573