嵌套在特征中的类:值是多少?

时间:2016-06-09 00:43:28

标签: scala playframework

我一直在使用一些Play Framework应用程序,这些应用程序通常定义嵌套在traits中的类。这是一个人为的简单例子。

的服务/ UsefulServiceComponent.scala

trait UsefulServiceComponent {

  val usefulService: UsefulService

  class UsefulService {
    def doSomething(thing: Thing): OtherThing = {
      // etc.
    }
  }
}

控制器/ TheController.scala

import services.UsefulServiceComponent

object TheController extends Controller with UsefulServiceComponent {

  val usefulService = new UsefulService

  def findOtherThing(id: Long) = {
    val thing = ??? // Get it from somewhere
    usefulService.doSomething(thing)
  }

  // etc.
}

这种模式是否常见?在UsefulService内嵌套UsefulServiceComponent会获得什么价值?

2 个答案:

答案 0 :(得分:0)

作用域。您也可以装饰/外观/调整服务

答案 1 :(得分:0)

这称为“蛋糕模式”,是一种在Scala中进行依赖注入的方法。我不想复制现有的解释,并且它们太大而无法在任何情况下快速回答,因此这里有一些链接:http://jonasboner.com/real-world-scala-dependency-injection-di/http://www.warski.org/blog/2010/12/di-in-scala-cake-pattern/http://www.warski.org/blog/2014/02/using-scala-traits-as-modules-or-the-thin-cake-pattern/(搜索Google或者名称的SO会给你更多。)