3

このシナリオについてパートナーと話し合っています。

**Publishers root entity 
Advertiser root entity**

これらの各エンティティは共通の情報を共有します: メール、BillingAddress、NormalAddress、性別、SSN など。

私は決定しました: Value オブジェクト Address と残りのプロパティを持つ Person エンティティ。このようにして、個人に関する特定の情報 (電子メール、性別、dateofbird) にアクセスしたい場合、それを取得するためにパブリッシャーまたは広告主のルート エンティティを経由する必要はありません (個人を集約ルートとして扱います)。

Sample: **Person.BillingAddress.Address1 :
        Person.BillingAddress.Address2 :
        Person.BillingAddress.POBOX :
        Person.Email :
        Person.Sex**

私のチームメイトは、抽象クラスを使用してそれを行うことを提案しています。広告主と発行者は、すべての共通プロパティを持つために Person 抽象クラスから継承します。

それを行うための最良の方法は何ですか?. お持ちの方はご案内ください。

ありがとう、ペドロ・デ・ラ・クルス

4

8 に答える 8

2

あなたは正しいと思います。継承は、振る舞いが一般的である場合(あるものは別のものである)にのみ意味があり、プロパティが類似しているという理由だけで、Personは他のものではありません。コードの再利用ではありません。

于 2011-01-12T20:46:04.070 に答える
1

@ Scott person から継承する際の問題は何ですか?

@Timどのように継承がここで失敗しますか?

Person を抽象クラスとし、Advertiser と Publisher を具象クラスとします。このようにして、Advertiser には共通のプロパティがあり、Publisher と同じように、person を渡すことができます。

広告主は人です。パブリッシャーは人です。継承の方が好き

于 2011-01-12T20:47:36.570 に答える
1

継承よりも構成を優先する必要があります。

そうしないと、ある時点でこの階層に何か他のものを導入する必要がある場合 (たとえば、ルート エンティティを AuditableEntity にする)、それを行うことができないため、設計の方が優れています (言語が多重継承をサポートしていない限り、これは悪いことです)。

于 2011-01-12T20:41:45.863 に答える
1

この場合、継承は気にしません。脆弱だと思います。

構成と役割に基づくアプローチを好みます。管理者ロールは、Person オブジェクトをラップし、ロールに関連付けられたすべての特別な属性と動作を持っている場合があります。

于 2011-01-12T20:41:52.137 に答える
1

Advertiser と Publisher は Company から継承する必要があり、Company には連絡先 (またはあなたの場合は Person) のコレクションが必要だと思います。

技術的には、Company は Branch のコレクションを持つことができます。

次に、各支店は住所を持つことができ、各連絡先 (個人) は住所を持つことができます。

于 2011-01-12T20:41:54.483 に答える
0

(警告-過度に単純化)

この場合の継承は、「isa」テストに失敗します。

通常、あなたは「私のクラスは「a」であるか、<whatever>それとも「持っている」かを尋ねるでしょう。<whatever>

于 2011-01-12T20:45:09.140 に答える