Joshua Blochは、Effective Javaを使用して、オブジェクトが構築の途中で一貫性のない状態になる可能性があることを述べています。JavaBeansパターンでは、クラスを不変にすることはできません。私はこれだけ理解しました。
また、構築が完了したオブジェクトを「凍結」し、凍結するまで使用できないようにすることで、これらの欠点を減らすことができるとも述べています。
誰かがオブジェクトを「凍結」することの意味を理解するのを手伝ってくれませんか?
事実上、「凍結」とは、多くの例外をスローすることを意味します。
これはごちゃごちゃしたパターンで、広く使われているとは思いません。はるかにきれいなパターンはビルダーパターンです。そこには、変更可能で段階的に構築できる1つのオブジェクト(ビルダー)があるという考えがあります。完了すると、不変のオブジェクトが生成され、その後の操作で使用されます。
パターンがおなじみのように聞こえる場合は、これがStringBuilder
クラスの機能とまったく同じであるためです(したがって、名前です)。