この質問はもう少し理論的です。プライベートな可変リストまたはマップを保持するオブジェクトがあり、その拡張は追加のみです。オブジェクト自体は機能的であり、機能的に透明であり、すべての外観に対して不変であると私は主張できると思います。だから例えば私は持っています
import scala.collection.mutable.Map
case class Foo(bar:String)
object FooContainer {
private val foos = Map.empty[String, Foo]
def getFoo(fooName:String) = foos.getOrElseUpdate(fooName, Foo(fooName))
}
私はリストで同様のケースを行うことができます。今、私は本当に機能していると想像しています。スレッドセーフを確保する必要があります。これは、ロック、同期、またはアトミック参照を使用するだけで実行できると思います。私の質問は、これはすべて必要十分であるということです、それは一般的な慣習ですか、この行動のための確立されたパターンはありますか?