Акка Актерский реквизит завод
Акка и я знакомимся.
От :Акка 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, если не найдено или найдено несколько подходящих конструкторов.»
Это хорошо, не правда ли?!? ....