簡體   English   中英

scala case類把方法放在伴侶對象中?

[英]scala case class put methods in companion object?

在case類或伴隨對象中聲明方法是否“更干凈”(相應的更好的性能)?

例如

case class My(a:A) {
    def m(args) = {...}
}
or
object My {
    def m(m:My, args) = {...}
}

我寧願把方法放在case類中。 將它放在伴侶對象聽起來像Anemic Domain Model反模式AnemicDomainModel

此外,您可以稍后覆蓋案例類方法或擴展和混合一些特征。

最好將方法放在case類中; 這不是說課程的全部意義嗎? 一個object是靜態的,通常是方法的一個不好的地方,因為這意味着他們需要再多拿一個參數。 我希望類中的方法執行得非常好,因為不需要加載伴隨對象實例(更一般地,它更接近JVM優化的樣式),但這幾乎肯定也是如此。在任何真正的程序中都有重要的區別。 當然沒有規則是絕對的; 如果你發現一個特定的方法似乎更適合於伴侶對象,那么無論如何都要把它放在那里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM