相关疑难解决方法(0)

Scala最佳实践:特征继承与枚举

我目前正在尝试使用Scala并寻找最佳实践.我发现自己有两种相反的方法来解决单个问题.我想知道哪个更好,哪个更好,哪个更常规,如果你知道其他一些更好的方法.第二个看起来更漂亮.

1.基于枚举的解决方案

import org.squeryl.internals.DatabaseAdapter
import org.squeryl.adapters.{H2Adapter, MySQLAdapter, PostgreSqlAdapter}
import java.sql.Driver

object DBType extends Enumeration {
  val MySql, PostgreSql, H2 = Value

  def fromUrl(url: String) = {
    url match {
      case u if u.startsWith("jdbc:mysql:") => Some(MySql)
      case u if u.startsWith("jdbc:postgresql:") => Some(PostgreSql)
      case u if u.startsWith("jdbc:h2:") => Some(H2)
      case _ => None
    }
  }
}

case class DBType(typ: DBType) {
  lazy val driver: Driver = {
    val name = typ match {
      case DBType.MySql => "com.mysql.jdbc.Driver"
      case DBType.PostgreSql => "org.postgresql.Driver"
      case …
Run Code Online (Sandbox Code Playgroud)

singleton enumeration scala object

11
推荐指数
2
解决办法
3863
查看次数

标签 统计

enumeration ×1

object ×1

scala ×1

singleton ×1