skillup

技術ブログ

ドキュメント作成

EntityとValue Objectについて

投稿日:2017年8月8日 更新日:

ドメイン駆動設計に関して勉強しています。参考にしている本がやたら難しいんで、トピックごとにネットで調べつつ進めていくのがよさげです。

今回はEntityとValueObjectについて

Entity

一般的にはテーブルをオブジェクトであらわたしたものがこれになることが多いようですが、もちろんイコールではありません。

しっかりとした定義としては下記のようなことがあげられます。

  • ユニークになるキーが存在する(必ず一意になる)
  • 内部の値が可変
  • ライフサイクル(生成→消滅)がある
  • 一般的には「顧客」などがEntityになることが多い

Value Object

Entityや他のValue Objectの「属性」として定義されます。下記のような特徴あり。

  • テーブルとして存在することがない
  • 値が不変。値の変更がある場合は、新しいものを別に作る必要があり
  • 一般的には顧客の名前、電話番号など属性の1つ1つがValue Objectとなることが多い

Domain-Driven Designのエッセンス 第2回 DDDの基礎と実践

戦術的DDD基本原則まとめ

実際のソース

ECCUBE3はどうやらドメイン駆動設計されているようでパッケージがController,Factory,Repository,Entity,などと分かれています。

そこでECCUBE3をみて実際にEntityなどで書かれているものを見てみます。

Entity内のプロパティ・メソッド

例: 注文(order)

プロパティ

  • 注文明細
  • 配送先
  • 顧客

ステータス系の値

複数持つ場合はすべてCollectionで持つ

メソッド

  • 商品種別のリストの獲得
  • 総数量・総金額値の獲得
  • 配送先情報の取得

基本的には関連する属性を取得・集計・判定するタイプのものが多い

-ドキュメント作成

執筆者:


comment

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

関連記事

no image

APIのエラーコードに関して

APIのよく使われるHTTPステータスコードに関して。 基礎の基礎で当たり前に使ってましたが、基本的なことに関してまとめ。 主に4XXエラーのタイプ分けに関して。 Contents1 2002 201 …

no image

プロジェクトごとのフェーズでやっておいたほうが良いと思うこと

またプロジェクトの途中ではありますが、自分の中で要件定義〜外部結合の始まりまでのフェーズを経験して思ったことなど Contents1 全般2 要件定義3 基本設計4 詳細設計5 製造6 単体テスト〜内 …

no image

設計業務での改善点など

比較的大規模なプロジェクトの設計段階で思ったことなど。会議など頻繁に開かれると思いますが、聞いているだけだったり、各人が色々なことを喋って内容がまとまっていなかったり・・結局何をやりたいかわからなくな …

no image

テスト環境のデータ作りに関して

単体テスト以降の環境ですとテストのデータを作ることがなかなか大変だと思います。マスタなどはそのままもらうこともあると思いますので、主にトランザクションデータについて。 以前もこのネタに関しては色々書い …

no image

テスト仕様書の必要な項目の定義など(横項目の定義)

前回はテストの項目をどのように作るか(分類するか)だったんですが、今回はテスト仕様書などを作る際に必要な項目の定義をまとめてみようかと。 テスト仕様書を作るとしたら前回は縦(バリデーションの組み合わせ …

アーカイブ