値オブジェクトを表すケースクラスの可視性を制御する価値はありますか? もしそうなら、ケースクラスの可視性修飾子で十分ですか、または明示的なコンパニオンオブジェクトとプライベートコンストラクターを使用する方が良いでしょうか?
バージョン 1:
case class MyClass private/protected/private[] {}
バージョン 2:
case class MyClass private
object MyClass {
def apply = {
new MyClass
}
}
要するに、問題は、scala で値オブジェクトを処理する方法として要約できます。私は個人的に新しいことを強制したいので、オブジェクトの作成で何かを変更したいのですが、いつでも変更できます。つまり、必要に応じてコンパニオン オブジェクトを追加するだけです。