0

エンタープライズ アプリ用の一連のモデルを作成しようとしています。それらがデータベースに非常に緊密に結び付けられたことは一度もありません。この時点で、「Is-A」または「Has-A」の質問に簡単に答えようとしています。私はこれをDB構造に基づいていますが、必然的にそれに縛られたくありません。

手始めに、典型的な「Has-A」の電話と住所を持つ非常に明白な Person モデルがあります。ほとんどすべてがその Person モデルに基づいて機能し、「Has-A」です。

ただし、メンバーがいます。DB/現在のシステムでは、メンバーは登録を持っている人です。具体的には、Dis-Enrolled( by Date )である特定のタイプの登録です。

一方では、Member は Form Person を「Is-A」関係として継承すると思います。しかし、私はこの種のことに非常に慣れていないので、考えすぎているのではないかと思います. 私の個人は「Has-A」登録ですか、それとも何か他のことを暗示していますか?

メンバーがいる場合、事前登録、登録、以前の登録で異なる「Is-A」モデルを使用する必要がありますか? それは州の問題のようですが、繰り返しますが、私はこれが初めてです。それが状態の問題である場合、「Has-A」登録の Person モデルだけに戻るのでしょうか?

これはある程度意見に基づいていることを理解しており、これに関する各人の意見を歓迎します。

4

2 に答える 2

1

Person が階層の上位にある方が理にかなっています。すべての人々のグループから、何人かのメンバー、何人かの元メンバー、そして何人かのメンバーがいます。

逆に言えば、すべてのメンバーのグループから、すべてが人です...しかし、一部は登録解除されていますか? 彼らが登録解除された場合、彼らはもはやメンバーではないので、それはあまり意味がありません.

メンバーであることと登録が関連していない場合を除きます (つまり、登録を取り消されてもメンバーであり続けることができる場合)。

于 2012-04-11T16:37:41.953 に答える
0

さて、私はあなたの質問に答えようとしますが、私は「登録」が何であるかを完全には理解していません (私は英語を母国語とはしていません) 何らかのメンバーシップだと思います.

IS-A 関係を使用することにしたとします。つまり、Member:Person、VIPMember:Member、ExMember:Member などになります。Person オブジェクトが Member またはその他に変更された場合はどうしますか? オブジェクトをこの型に変換し、Person オブジェクトから値をコピーする Member オブジェクトを作成する必要があります。これは多くのボイラープレート作業です。

オブジェクトが作成後に Type を変更する場合は、いくつかのプロパティを使用してそのタイプを区別することをお勧めします。Cosider Apple : Fruit (Apple は常に Fruit であり、Tomato になることはありません)、および CanceledOrder : Order (注文は CancledOrder になる可能性があるため、Order.State を優先します)。これは、オブジェクトが作成されるとその型を変更できない言語 (C# など) に特に当てはまります。

私が理解したことからあなたのケースについては、私が作成するだろう:

public class Person
{
    public IEnumerable<Membership> Memberships {get;}

    public bool IsMember 
    {
        get
        {
            return Memberships.Any();
            //Or what ever logic you imply
        }
    }
}
于 2012-04-11T19:24:46.703 に答える