2014-01-02 4 views
1

Я только начинаю проверять себя с помощью Scala. Я достаточно уверенно начинаю реорганизовывать текущее многопоточное приложение, над которым я работаю примерно полтора года.Интерфейс поведения Akka и Actor

Однако что-то, что как-то беспокоит, и я не могу как-то понять это, как разоблачить интерфейс/контракт/протокол персонажа? В режиме OO у меня есть мой открытый интерфейс с синхронизированным методом, если это необходимо, и я знаю, что я могу сделать с этим объектом. Теперь, когда я собираюсь использовать актера, кажется, что все это больше не будет доступно.

В частности, I a KbService в моем приложении с набором методов для работы с этим Kb. Я хочу сделать его актером самостоятельно. Для этого мне нужно сделать все методы частными или защищенными, учитывая, что теперь они будут вызваны только моим принятым методом. Следовательно, выставлять набор доступных действий.

Есть ли какая-то лучшая практика для этого?

ответ

4

Чтобы решить эту проблему, я обычно раскрываю набор сообщений, которые Актер может получать через объект «протокол».

class TestActor extends Actor { 
    def receive = { 
    case Action1 => ??? 
    case Action2 => ??? 
    } 
} 

object TestActorProtocol { 
    case object Action1 
    case object Action2 
} 

Поэтому, когда вы хотите связаться с TestActor, вы должны отправить ему сообщение из своего объекта протокола.

import example.TestActorProtocol._ 

testActorRef ! TestActorProtocol.Action1 

Это может стать тяжелым иногда, но, по крайней мере, существует какой-то контракт.

Надеюсь, это поможет

+0

Да, это действительно спасибо. – MaatDeamon

Смежные вопросы