Акка Актерский реквизит завод

Акка и я знакомимся.

От :Акка 2.3.6 (текущий) Актер Рекомендуемая практика

Это пример актера под названием DemoActor:

class DemoActor(magicNumber: Int) extends Actor {
  def receive = {
    case x: Int => sender() ! (x + magicNumber)
  }
}

ВРекомендуемые практики В разделе документа говорится:«Хорошей идеей будет предоставить фабричные методы для сопутствующего объекта каждого актера, которые помогут поддерживать создание подходящих реквизитов как можно ближе к определению актера». Что они делают так:

object DemoActor {
  def props(magicNumber: Int): Props = Props(new DemoActor(magicNumber))
}

Вопрос : В чем разница между указанием фабрики для метода реквизита, например:

object DemoActor {
  def props(magicNumber: Int): Props = Props(classOf[DemoActor], magicNumber)
}

В случае, если вы пропустили это, разница заключалась в аргументе конструктора Props:

new DemoActor(magicNumber)

В.С.

classOf[DemoActor], magicNumber

С той же страницы документации Акки немного дальше вРаздел реквизитатакже упоминается при использованииProps(classOf[ActorWithArgs], "arg1"): «Наличие подходящего конструктора проверяется во время конструирования объекта Props, что приводит к IllegalArgumentEception, если не найдено или найдено несколько подходящих конструкторов.»

Это хорошо, не правда ли?!? ....

Ответы на вопрос(1)

Ваш ответ на вопрос