单一方法类方法

时间:2016-05-31 17:42:43

标签: scala

我看到同事编写的单个方法类的以下代码:

class Foo(boo: Boo){
  def doSomething() {...}
}

其中有应用程序配置数据的数据初始化。我想知道它比以下方法有什么优势。

object Foo {
  def doSomething(boo: Boo){...}
}  

我认为,这种方法更适用于在某个地方创建而不是类的情况,并且在无法访问参数的其他地方调用该方法。就我所见,它并未在上述情况下使用。在比较这两种方法方面还有什么其他方面?

2 个答案:

答案 0 :(得分:2)

第二种方法在内存和性能方面更好,因为每次只想调用该方法时都不需要对象实例化。

但是,如果要添加新参数,第一种方法可能更易于维护。如果在方法中完成的计算需要某种形式的Foo特定实例的缓存,您还可以轻松添加新字段。

一般而言,取决于更广泛的背景,哪种方式应该是首选。对于配置数据或其他上下文持有者,第二种方法可能更有意义,因为这些随机实例不应该引用它们。

答案 1 :(得分:1)

这主要是品味问题。我同意你的观点,在这里使用object可能更好,也因为它避免了不必要的类Foo的分配。另一方面,值类也将是“免费分配”,并且在幕后执行类似于单例对象的操作:

trait Boo

class Foo(val boo: Boo) extends AnyVal {
  def doSomething() = ???
}
相关问题