Java ずーっと悩んでいましたが、やっとしっくり来ました。表にまとめてみます。 名称不変/可変備考VO (ValueObject)不変 粒度が細かい一つのデータ値を示す事が多い。 Serializable・Comparableを実装する。 セッタを定義する時は新規インスタンスを返す。 例:String、Integer、BigDecimalDTO (DataTransferObject)可変 データの論理的な構造を示し、ゲッタ・セッタを定義する。 セッタには引数検証を実装する時もある。 セッタ・ゲッタ無しでpublicフィールドの場合も。JavaBeans可変 DTOにゲッタ・セッタ以外のインスタンスメソッドをプラスしたもの。 (例えばList内Integerの合計値を返すメソッドとか) この表から考えると、VO、DTO、JavaBeansはis-a関係にできそう・・・ コード例例によって