【发布时间】:2011-01-17 15:09:03
【问题描述】:
我们即将创建一个新网站。该网站非常以用户为中心。我们向用户展示不同类型的信息。
现在我们即将决定如何对此进行建模,并且我们正在考虑一些选项。
首先我想描述一些常见的场景。 1) 有时我们想显示当前用户的用户名、城市和图片 2)有时我们想显示所有用户信息 3)有时我们只想显示用户名 4) 有时我们想显示用户名和城市
每个场景都与网站上的一个或多个页面相关。 例如,我们的论坛帖子页面可能会显示来自场景 1 的信息,我们的搜索可能会显示来自场景 4 的信息。
这可以通过多种方式解决,我想听听您认为最好的方法。
我采取了一些有利/不利的解决方案。
首先,多个类。 从用户创建一个具有所有通用属性的基类。然后从那里延伸。 例如。
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;
}
优点:只需要准确地填写您当时需要的内容,这使得从性能角度来看它是可扩展的。 缺点:当您将来需要更改某些内容时,很难维护。会有很多依赖。
另一种解决方案可能是始终将所有内容放在一个类中并一直使用它。
public class User
{
public string username;
public string city;
public string picture;
public string SomeProperty;
}
优点:您始终掌握有关用户的所有信息 缺点:你在哪里画线?我们可以把 OrderLines 和 UserContacts 放在这里吗?一切都依赖于这一类,如果您需要更改某些内容,则很难维护。
另一种解决方案是为几乎每个页面创建一个独特的上下文
public class ForumPost
{
public string data;
public string topic;
public string username;
public string usercity;
public string userpicture;
}
公开课 SearchPost { 公共字符串搜索数据; 公共字符串用户名; 公共字符串用户城市; }
优点:不依赖其他任何东西,只需要填写必要的信息 缺点:开发速度较慢,如果您希望所有页面都有一个新属性(例如用户年龄),则需要进行大量更改。
建议?
【问题讨论】: