我尝试为我们的企业应用程序创建一组模型。它从未让它们与数据库紧密地联系在一起。在这一点上,我尝试简单地回答“是-A”或“有-A”的问题。我是以DB结构为基础的,但我不想,从本质上说,我不想被束缚在这个结构上。
首先,我有一个非常明显的人物模型,典型的“有-A”电话和地址。几乎所有的事情都与那个人的模型不同,而且都是“有-A”。
然而,我们有成员。在我们的DB/当前系统中,成员是有注册的人。具体来说,是一种特定类型的注册,即Dis注册(按日期)。
一方面,我觉得成员会继承形式人作为一个“是-A”的关系。然而,我对这类事情非常陌生,我想知道我是不是想得太多了。我的人是“有-A”注册,还是意味着其他什么?
这让我想知道,如果我有一个成员,我是否应该有不同的"Is-A“模式的入学前,注册,以前的注册?这似乎更多地是一个国家问题,但我在这方面还是新手。如果这是一个国家的问题,我是不是又回到了拥有一个“有-A”注册的人模型?
我知道这在某种程度上是以意见为基础的,我欢迎每个人对此发表意见。
发布于 2012-04-11 16:37:41
在高高在上的人是更有意义的。从所有的人中,你有一些成员,一些前成员,和一些可能的成员。
如果你试着用另一种方式来看待它,并从所有成员的小组中说,所有的people...but都是Dis注册的吗?这样就没什么意义了,因为如果他们是Dis注册的,那么他们就不再是会员了。
除非是会员和注册人员之间没有联系。如果你可以注册并仍然是会员的话)。
发布于 2012-04-11 19:24:46
嗯,我试着回答你的问题,虽然我不完全理解什么是“注册”(我不是英语母语),我想是某种会员资格。
假设您将决定使用IS-A关系,那么您将得到:成员: Person,VIPMember: Member,ExMember:Member等。如果您的Person对象更改为成员或其他任何东西,您会做什么?您必须将对象转换为此类型,从Person对象创建一个成员对象副本值.这是很多样板工作。
如果对象在创建后更改了type,最好使用一些属性来区分它的类型。苹果:水果(苹果总是水果,它不能变成番茄)和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
}
}
}https://stackoverflow.com/questions/10110044
复制相似问题