2016-12-15 60 views
1

作爲Akka的新手,我需要幫助您以簡單的方式瞭解Props的優點。共同的OO風格對象創建有什麼問題?道具爲阿卡的演員創造帶來了什麼好處?

我所知道的是,這是遵循工廠模式,您將類和PROP中的屬性發送到工廠,併爲您創建演員。 [如我錯了請糾正我]?

但我沒有看到需要,我知道這是根本。這是我的困境。

你能幫我理解這可能是通過類比/代碼?

回答

2

我發現創建actor的這種方式有兩個好處。

第一個很簡單:它爲您提供了一個保證,當創建一個Actor對象時,它也在actor系統中正確註冊(它必須有一個父actor來監督它,獲取調度器推送的消息等)。所以你永遠不會得到一個類型爲Actor的對象,但實際上它存在於actor系統之外。

第二個是在actorOf(props: Props): ActorRef方法的定義可見:它實際上並不返回Actor,而是一個ActorRef(以及ActorRef不暴露到下面Actor的參考任一)。

這意味着你永遠不會直接訪問actor本身,也不能通過直接調用actor上的方法來繞過Akka API,而不是發送異步消息。如果你自己構建Actor,那麼顯然你可以直接訪問演員,這使得通過破壞演員模型保證的方式來訪問演員太容易了。

-1

我不認爲也有任何優勢。其實,它有助於我理解API。

爲什麼不喜歡這樣的:

ActorRef actorA = system.getRefByCreateActor(ActorA.class, Props.create(......)); 

NoSender.tell(actorA, message);