Value Objectとは(VO)

Value Objectとは(VO)

何気にVOとかDtoとかネーミングしていたけどValue Objectというとマーチンファウラーさんのサイトがわかりやすいです。

オレオレ翻訳するとフィールドにはコンストラクタでのみ値を設定(もしくはそれ専用のメソッド)し、フィールドはイミュータブル(不変)であることがValue Objectクラスのあるべき定義みたいです。

setterなどで後から値が変更できる設計のクラスではダメで、インスタンス生成時に全て設定がされているクラス設計というイメージでしょうか。

こんなイメージです。

結果は以下のようになります。

lombokでいう@Value

lombokでいう@Valueアノテーションをクラスに書くとprivate finalなフィールドとgetterのみのアクセサが用意されます。setterを用意してしまうとDIした後に書き換えることが出来てしまいます。

設定ファイルのクラス(S3Config.java)

設定ファイル(application.yml)

参考サイト

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA