我在阿卡建立的代碼庫工作,我看到這種模式有很多:任何避免在Akka伴侶對象中定義道具方法的方法?
class Bar(a: A, b: B, c: C) extends Actor {
// body of actor
}
object Bar {
def props(a: A, b: B, c: C) = Props(new Bar(a = a, b = b, c = c)
}
但道具方法感覺醜陋像Java中一個getter/setter方法。有一個更好的方法嗎?
我認爲這將有可能直接例如創建演員
var child = context.actorOf(Props(new Bar(a, b, c))
由於這不是比使用道具的版本要複雜得多:
var child = context.actorOf(Bar.Props(a, b, c))
但是,如果我理解這個職位上Deprecation of Closures Taking Props那麼這是不好的做法。相反,他們主張使用:
var child = context.actorOf(Props(classOf[Bar], a, b, c))
但是,那麼這會遭受重構問題,如Ryan概述如下?
將「Props」放置在伴侶對象中使其更接近它所構造的actor的定義,並且稍後可以更輕鬆地重構該actor,因爲您不會在同一個actor中存在多個「Props」。 – Ryan
嗨,瑞恩!我觀察完全相反。這個構造使得重構變得更糟,因爲現在我需要改變所有構造函數和道具方法。除非這裏有其他限制,我不明白?你能多解釋一下嗎? –
你誤會了。你的第一個例子是我所倡導的,而不是你添加到你的文章中的那個。 – Ryan