Scala的ClassTag

trait DDDDatabaseHelper {
  def props():Props
}
object ObjectDatabaseHelper extends DDDDatabaseHelper{
  def props(): Props = Props(new ObjectDatabaseHelper())
}
class ObjectDatabaseHelper extends Actor with DatabaseHelper{
  def receive = {
    case _ => "OK"
  }
}


object ObjectRoute {
  def props[T:ClassTag](t:T,t1:DDDDatabaseHelper): Props = Props(new ObjectRoute(t,t1))
}



class ObjectRoute[T:ClassTag](t:T,t1:DDDDatabaseHelper) extends Actor{
  implicit val timeout = Timeout(5 seconds)
  val accountDatabaseActor = context.actorOf(t1.props(), s"${t.getClass.getName}Actor")

  def receive = {
    case t@OperationMessage(operation, account: Company) if operation == Create || operation == Modify || operation == Delete =>
      sender ! account.copy(name = accountDatabaseActor.path.name)
    case _ => SSOException(-1, "Unknown Error")
  }
}

object Main extends App{

  import scala.concurrent.duration._
  implicit val timeout: Timeout = 5.seconds
  implicit val system = ActorSystem("SSOSprayRoot")
  val companyRoute = system.actorOf(ObjectRoute.props(Company,ObjectDatabaseHelper), name = "sprayActor")
  val companyBean=new Company(
    1,
    "1111111111",
    "1111111111",
    "1111111111",
    "1111111111",
    "1111111111",
    "1111111111",
    "1111111111",
    1,
    "1111111111",
    "1111111111",
    "1111111111",
    "1111111111",
    "1111111111",
    InitState,
    "1111111111",
    "1111111111"
  )
  val t =companyRoute ? OperationMessage(Create, companyBean)
  t.onSuccess{
    case SSOException(err, str) => println(err + "\t" + str)
    case other: Company => println("back Company\t" + other.name)
    case otherwise => println("unknown")
  }

}

终于可以把原来十几个相同的Actor替换掉了.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值