作爲Akka的新手,我需要幫助您以簡單的方式瞭解Props的優點。共同的OO風格對象創建有什麼問題?道具爲阿卡的演員創造帶來了什麼好處?
我所知道的是,這是遵循工廠模式,您將類和PROP中的屬性發送到工廠,併爲您創建演員。 [如我錯了請糾正我]?
但我沒有看到需要,我知道這是根本。這是我的困境。
你能幫我理解這可能是通過類比/代碼?
作爲Akka的新手,我需要幫助您以簡單的方式瞭解Props的優點。共同的OO風格對象創建有什麼問題?道具爲阿卡的演員創造帶來了什麼好處?
我所知道的是,這是遵循工廠模式,您將類和PROP中的屬性發送到工廠,併爲您創建演員。 [如我錯了請糾正我]?
但我沒有看到需要,我知道這是根本。這是我的困境。
你能幫我理解這可能是通過類比/代碼?
我發現創建actor的這種方式有兩個好處。
第一個很簡單:它爲您提供了一個保證,當創建一個Actor
對象時,它也在actor系統中正確註冊(它必須有一個父actor來監督它,獲取調度器推送的消息等)。所以你永遠不會得到一個類型爲Actor
的對象,但實際上它存在於actor系統之外。
第二個是在actorOf(props: Props): ActorRef
方法的定義可見:它實際上並不返回Actor
,而是一個ActorRef
(以及ActorRef
不暴露到下面Actor
的參考任一)。
這意味着你永遠不會直接訪問actor本身,也不能通過直接調用actor上的方法來繞過Akka API,而不是發送異步消息。如果你自己構建Actor
,那麼顯然你可以直接訪問演員,這使得通過破壞演員模型保證的方式來訪問演員太容易了。
我不認爲也有任何優勢。其實,它有助於我理解API。
爲什麼不喜歡這樣的:
ActorRef actorA = system.getRefByCreateActor(ActorA.class, Props.create(......));
NoSender.tell(actorA, message);