質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
ドメイン駆動設計

ドメイン駆動設計(Domain-driven design, DDD)とは、ソフトウェアの設計手法、および設計思想や哲学のことです。ドメインモデル構築の際に、設計上の判断を決定する枠組みとドメイン設計に関して議論するボキャブラリを提供するものです。

Q&A

1回答

832閲覧

ドメイン駆動設計におけるEntityとValueObjectの同一判定と同値判定について

zanarukando

総合スコア3

ドメイン駆動設計

ドメイン駆動設計(Domain-driven design, DDD)とは、ソフトウェアの設計手法、および設計思想や哲学のことです。ドメインモデル構築の際に、設計上の判断を決定する枠組みとドメイン設計に関して議論するボキャブラリを提供するものです。

0グッド

0クリップ

投稿2020/10/20 11:22

編集2020/10/20 12:57

前提・実現したいこと

最近ドメイン駆動設計を勉強してるのですが、よくEntityとValueObjectの同一・同値判定処理を実装する記事がよくあります。
EntityとValueObjectの概念は理解できたのですが、その同一・同値判定処理はどこの場面で使用するのか分らず、悩んでます。

どこのサイトも概念とコードは転がっているのですが、具体的な使用方法が知りたいです。
少し、淡白な質問になってしまい申し訳ありませんが、ご教授お願いしたいです。

C#

1class product 2{ 3 private int _id; 4 private string _name; 5 6 public product(id ,name) 7 { 8 this._id = id 9 this._name = name 10 } 11} 12 13 14Product p1 = new Product(1, "pro1"); 15Product p2 = new Product(1, "pro2"); 16 17p1.equals(p2); 18

みやいな記事をよく見かけるのですが、同じ識別子を持ったオブジェクトを比較する処理ってどんな場面かいまいち、ピンとこないのです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2020/10/20 12:19

> 同一・同値判定処理はどこの場面で使用するのか分らず むしろ同一・同値判定をしないプログラムの方が世の中少ないと思いますが、どんなプログラムを作る想定なんでしょうか?
Zuishin

2021/10/04 00:42

例えばババ抜きなら、手持ちのカードのどれを捨てればいいかの判定に使えます。 この調子で例をずらずら挙げればいいんですか?
guest

回答1

0

値オブジェクトであれば、equalsでよいと思います。すべての属性が一致しているかで判定することが多いです。

エンティティの場合は、エンティティの場合は識別子(ID)が一致しているかどうかだけが関心事になりますが、equalsで実装するパターンと、別メソッド(sameIdentityなど)で実装するパターンがあります。equalsで実装すると標準ライブラリのコレクションに含めた場合も識別子に基づいて簡単に検索・置換・取得が可能です。しかし、equalsが識別子以外の属性に基づいて判定していないので誤用の原因にもなります。であれば、別途IDが同一か判定するメソッドがあればよいという考え方もあります。

投稿2021/10/03 23:31

j5ik2o

総合スコア41

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問