加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala – 组织单例对象层次结构的正确方法是什么?

发布时间:2020-12-16 09:52:40 所属栏目:安全 来源:网络整理
导读:这是我在 Scala中遇到的一些不会导致 Java出现任何问题的东西.现在我只是不知道在Scala中这样做的正确方法是什么. 问题描述:我有一个Scala对象,它表示一个’抽象’对象.它打算有一个单一的配置文件,但它并不打算用于实际用途,它只是它的儿童单身人士常见的
这是我在 Scala中遇到的一些不会导致 Java出现任何问题的东西.现在我只是不知道在Scala中这样做的正确方法是什么.

问题描述:我有一个Scala对象,它表示一个’抽象’对象.它打算有一个单一的配置文件,但它并不打算用于实际用途,它只是它的儿童单身人士常见的一堆定义.所以相反,我想用它的孩子.所以有一个问题:因为我不能继承对象,是否应该将常见的单例功能实现为类?作为一个抽象类?特质不适合我,因为它不能有构造函数.
??如果抽象父类会这样做,那么如果我需要它们,我应该如何访问它的单例(或静态)方法呢?
??我意识到我的设计可能存在缺陷,但由于我有这个问题并且无法想出任何明确的答案,所以听到你说的话(包括设计备选方案)很有意思.

解决方法

你真的应该使用一个特质;不需要构造函数(事实上,它们没有任何意义,因为scala对象没有构造函数):

这是共享的特质; needA是您传递给构造函数所需的值.也就是说,特征的功能需要它.

trait Common {
  def needA: A

  def sharedMethod { /* implement me*/ }
}

然后你的模块看起来像这样:

object Mod1 extends Common {
  val needA = { /* implement me*/ }
}     
object Mod2 extends Common {
  val needA = { /* implement me*/ }
}

请注意,它们通过使用val来覆盖def来指定公共功能所需的值

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读