オブジェクト指向の勉強をしていて、「完全コンストラクタパターン」というものが出てきた。これは、オブジェクト生成時にコンストラクタに必要な情報を全て渡して、後からそのオブジェクトの状態(フィールド変数)を変更しない設計方式。つまり、オブジェクトのもととなるクラスについては、setter は持たず、フィールド変数の定義に final が付くことになる。
このパターンのメリットは、オブジェクト生成時点からオブジェクトの状態が変更されない、つまりイミュータブルなオブジェクトになるので、どこかでそのオブジェクトが変更されている可能性を気にする必要がなくなるし、意図せずオブジェクトの状態が変更されているということも起きなくなる。
オブジェクト生成時点で必要な情報が全て揃う場合に有用だと思う。