C# DDD中的子类和抽象类

C# DDD中的子类和抽象类,c#,nhibernate,domain-driven-design,C#,Nhibernate,Domain Driven Design,我有一个抽象基类,名为Person,子类为Employee和Customer 您如何处理员工同时也是客户的情况?如何创建这一系列实体 干杯如果您希望员工成为客户,那么客户可能不应该派生自person,而应该是它自己的类层次结构,它(通常)封装了person 在许多方面,这更有意义,因为客户也可能是公司或其他形式的实体,而不是个人。如果您希望员工成为客户,那么客户可能不应该派生自个人,而应该是它自己的类层次结构,它(通常)封装了个人 在许多方面,这更有意义,因为客户也可能是一家公司或其他形式的实体

我有一个抽象基类,名为Person,子类为Employee和Customer

您如何处理员工同时也是客户的情况?如何创建这一系列实体


干杯

如果您希望员工成为客户,那么客户可能不应该派生自person,而应该是它自己的类层次结构,它(通常)封装了person


在许多方面,这更有意义,因为客户也可能是公司或其他形式的实体,而不是个人。

如果您希望员工成为客户,那么客户可能不应该派生自个人,而应该是它自己的类层次结构,它(通常)封装了个人


在许多方面,这更有意义,因为客户也可能是一家公司或其他形式的实体,而不是一个人。

+1很多时候,人们认为OO太字面化了。Hanselminutes曾经对此进行过一次有趣的讨论,尽管我忘了Scott在和谁说话。基本上问题是正方形是一种形状吗?身体上,是的。但是,如果更改长度,则会隐式更改宽度,因此这可能会在OO世界中导致问题,而调用代码并不期望这样。重点是,有时候OO与我们看待周围世界的方式并不是1:1。很多时候,人们认为OO过于字面化。Hanselminutes曾经对此进行过一次有趣的讨论,尽管我忘了Scott在和谁说话。基本上问题是正方形是一种形状吗?身体上,是的。但是,如果更改长度,则会隐式更改宽度,因此这可能会在OO世界中导致问题,而调用代码并不期望这样。重点是,有时候OO与我们看待周围世界的方式不是1:1。