在scala中,我如何在类+伴随对象与对象之间做出决定

时间:2018-06-12 15:01:32

标签: scala object companion-object coding-style

我不确定是否应该在scala中选择带有伴随对象的类,而不是仅使用对象。 我只是想使用该对象,但仅仅因为我只需要该类的一个实例。另一方面,我正在阅读带有伴侣对象的课程是一种很好的做法。 那么,关于何时使用这些或其他的任何帮助?

由于

2 个答案:

答案 0 :(得分:1)

  1. 如果要定义单个对象,则应使用object关键字(专门为此目的引入该语言)。
  2. 您想要定义单个对象。
  3. modus ponens

    • 您应该使用object关键字

    所以不需要class

    但是,如果您正在使用一些依赖注入框架,并且您希望单个对象由DI容器实例化,并且此框架要求singleton对象是具有普通构造函数的普通旧Java类的实例,您可能希望使用class代替。

    在所有其他情况下,我认为没有任何理由不使用该语言的内置object功能。

答案 1 :(得分:0)

一种流行的伴侣对象模式如下

class Abc {
  ...
}

object Abc {
  def apply(): Abc = new Abc()
}

所以不要写

val abc: Abc = new Abc()

我们可以简单地写

val abc: Abc = Abc()

但如果您只需要一个对象,我认为只有一个对象是没有害处的。

不要忘记伴侣对象是放置implicit的最佳位置。