首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单方法类方法

单方法类方法
EN

Stack Overflow用户
提问于 2016-05-31 17:42:42
回答 2查看 54关注 0票数 1

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

代码语言:javascript
复制
class Foo(boo: Boo){
  def doSomething() {...}
}

其中有使用应用程序配置数据的数据初始化。我想知道它比下面的方法有什么好处。

代码语言:javascript
复制
object Foo {
  def doSomething(boo: Boo){...}
}  

我认为,这种方法更适合于这样一种情况,即在某个地方创建一个而不是类,并且在另一个地方调用该方法,在那里没有对参数的访问。据我所见,它没有在上面描述的情况中使用。在这两种方法的比较方面还有什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-31 17:58:50

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

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

一般来说,这取决于更广泛的情况,哪种方式应该更好。对于配置数据或其他上下文持有者,第二种方法可能更有意义,因为这些方法无论如何都不应该被一些随机实例引用。

票数 2
EN

Stack Overflow用户

发布于 2016-05-31 17:59:04

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

代码语言:javascript
复制
trait Boo

class Foo(val boo: Boo) extends AnyVal {
  def doSomething() = ???
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37552355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档