新しいサイトを作成しようとしています。このサイトはユーザー中心のサイトです。さまざまな種類の情報とともにユーザーを表示します。ドメインモデルをどのように設定しますか?
これをモデル化する方法を決定しようとしており、いくつかのオプションについて考えています。
まず、いくつかの一般的なシナリオについて説明します。 1)現在のユーザーのユーザー名、市町村、写真を表示する場合があります 2)すべてのユーザー情報を表示したい場合があります 3)ときどきユーザー名のみを表示したい場合 4)時にはユーザー名と都市を表示したい場合もあります
各シナリオは、Webサイトの1つまたは複数のページに関連しています。 たとえば、forumpostsのページにはシナリオ1の情報が表示される場合があります。
これはさまざまな方法で解決できますが、私はあなたの意見をお聞きしたいと思います。
私は賛否両論でいくつかの解決策を取っています。
まず、複数のクラス。 すべての共通プロパティを持つユーザーから基本クラスを作成します。それからそこから広がります。 たとえば、
public class BaseUser
{
public string username;
}
public class User : BaseUser
{
public string city;
}
public class UserWithPicture : User
{
public string picture;
}
public class CompleteUser : UserWithPicture
{
public string SomeProperty;
}
長所:その時点で必要なものを正確に入力するだけで、パフォーマンスの観点から拡大縮小できます。 短所:将来何かを変更する必要がある場合はいつでも維持管理が難しい。多くの依存関係になります。
もう1つの解決策は、常にすべてを1つのクラスにまとめて使用することです。
public class User
{
public string username;
public string city;
public string picture;
public string SomeProperty;
}
長所:あなたが線を描画します:あなたは、常にユーザー 短所に関するすべての情報を持っていますか? OrderLinesとUserContactをここに配置できますか?すべてがこの1つのクラスに依存しているため、何かを変更する必要がある場合、維持するのが難しくなります。
別の解決策は、ほぼ各ページに一意のコンテキストを作成することです
public class ForumPost { public string data; public string topic; public string username; public string usercity; public string userpicture; }
public class SearchPost { public string searchdata; public string username; public string usercity; }
長所:他の何かに依存し、必要な情報のみ 短所記入する必要はありませ:、遅い開発をし、すべてのページに対して1つの新しいプロパティ(ユーザーの年齢など)が必要な場合は、多くの変更が必要になります。
提案?
ユーザーが100の異なるプロパティで、多くの異なるテキスト(多くのデータ)で満たされている場合はどうなりますか?ページの1%のみで使用しても、ネットワーク経由で送信する必要がありますか? – Patrik
そのようなケースで問題がある場合は、一般的なプロパティクラスを導入することができます。たとえば、クラスUserProperty {string username、string propertyKey、string propertyValue}のようなものがあります。これらのユーザの多くはユーザごとに存在し、それぞれのユースケースに対して必要なプロパティをロードするだけです。 –