我正在写一个会计应用程序,不清楚如何对供应商建模。在我的业务领域中,供应商被定义为销售产品或提供服务的人或企业。人和企业之间的主要区别在于,人有名字、中间名和姓氏,而企业只有名字。
看起来供应商应该从两者中继承下来,但是我的编程语言Delphi不允许多重继承。有没有办法创建一个或两个继承关系,或者我是否应该在模型中包含每个name属性和一个"type“属性,该属性将接受"person,business”的值?
发布于 2016-02-16 09:06:45
如果您说Person始终是一种Vendor,而Business始终是一种Vendor,那么您永远不可能拥有不是Vendor实例的Person实例,也不可能拥有不是Vendor实例的Business实例。这不管用。
让我们尝试颠倒层次结构。如果您说Vendor始终既是一种Person又是一种Business,那么Vendor的实例如果不同时是Person和Business就不可能存在。这也不起作用。
这里出了点问题!
输入角色。通常,由Actor播放Role。在您的示例中,Actor可以是Person或Business。Vendor是由这些Actors之一播放的Role。见鬼,您甚至可以使Actors的两个子类覆盖和不相交,这意味着您不能让Actor的实例既是Person的实例又是Vendor的实例,并且一个实例不能既是Person又是Vendor。
角色为您提供了很大的灵活性。例如,您可以让一个Person在两个不同的Vendor中扮演不同的Buyers的角色。角色也可以来来去去,有开始时间和结束时间。因此,我认为角色是您正在寻找的解决方案。
https://stackoverflow.com/questions/33906878
复制相似问题