2009-03-08 5 views
10

ビジネスオブジェクトとエンティティの間に違いはありますか?ビジネスオブジェクトとエンティティ

私がPOCOタイプのクラス、たとえばProductクラスを定義すると、これはビジネスオブジェクトかエンティティですか?

public class Product { 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public double Price { get; set; } 
    public string Sku { get; set; } 
} 

注このオブジェクト内ない機能はありません。

+0

私の答えで説明した自分の "ルール"によると、あなたが提示したクラスはエンティティになります。 –

答えて

12

私はそれをDTO(データ転送オブジェクト)と呼んでいます。私は過去の時代に彼らが「物件クラス」と呼ばれることも見てきました。私はビジネス・オブジェクトと呼ぶことはありません。なぜなら、それは振る舞いがないからです。そして、BOはその振る舞いによって定義されます。

+3

これはWikipediaの言い回しと矛盾しています:http://en.wikipedia.org/wiki/Business_object- "プログラムは通常、振舞いを管理または実行するオブジェクトで終わるクラスを実装することができますが、ビジネスオブジェクトは通常、インスタンス変数またはプロパティのセット " –

0

ビジネスオブジェクトとエンティティが明確に区別されているとは思いません。異なる執筆者は、異なるバージョンを使用しているようです。

これらのコメントをAyendeでご覧ください。

5

私はそれらを同じだと考えていますが、あなたのビジネスレイヤーの中でいくつかのコントローラのようなクラス(ドメインモデルで動作する)がエンティティと呼ばれることはないかもしれません。私は、Productのようなクラスはビジネスオブジェクトとエンティティの両方であり、ProductControllerはビジネスオブジェクトだけであると言います。エンティティは、ドメインモデルオブジェクト(ユーザー、ブック、車など)を表し、それ自体のデータも含まれています。私はそれが命名の問題であり、重要ではないと思う、私は両方の用語を同じ意味で使う傾向があるが、通常は上記の「ルール」を使用する。

0

「エンティティ」という用語は、通常、「物」と言うより偽りの方法として使用されます。例えばエンティティの関係図を考えてみましょう。

ビジネスオブジェクトは、ビジネスドメイン内の単純なもの(oops、エンティティ)です。私は、あなたのProductが事業エンティティであると言います - 実装ドメイン内のものであるStringと比較してください。

+0

私は "エンティティ"の説明に同意しますが、 "ビジネスエンティティ"と "ビジネスオブジェクト"を混在させます。 – Gray

0

私の経験ではエンティティは通常CRUDに関連付けられています。ビジネスオブジェクトは、strategiesなどの非永続オブジェクトでもかまいません。

6

すべてのエンティティはビジネスオブジェクトですが、すべてのビジネスオブジェクトがエンティティではありません。

エンティティは、その属性によってではなく、製品のIDのような識別子によって識別されるビジネスオブジェクトです。

エンティティではないビジネスオブジェクトの例として、Colorを使用できます。 ColorはRBG値からIDを取得します。

私はもちろん、Entities and Value Objects in Domain-Driven Designを参照しています。

+0

私は色が*値オブジェクト*と見なされると言います。それはその値によって識別され、同じ値を持つ複数のインスタンスは同一であるとみなされます。通常、VOも不変です。赤色は変化しません。 –

0

ビジネスオブジェクトとエンティティの間に違いはありますか?

ウィキペディアは、私が "エンティティ"と呼ぶものと同じになるように"business object"を定義しています。 "ビジネスロジック"はエンティティと直交しているので、この定義の私の混乱は、 "ビジネス"という言葉にあります。 「エンティティ」(DTO、「データエンティティ」など)は、フィールドとget/setタイプのメソッドを持つオブジェクトです。それはデータを保持するが、もしあれば最小の論理を含む。

"ビジネスロジック"または "ビジネスルール"オブジェクトは、これらのエンティティで動作する高次ロジックの必要性をカプセル化します。エンティティのフィールドを使用して決定を行い、必要に応じてエンティティを変更して保持します。

関連する問題