继承关系混乱

时间:2015-07-19 02:28:50

标签: oop inheritance

我有三个类 - 用户,供应商和客户。现在Customer'是'a'用户并且具有与User相同的属性,因此它应该继承User类。但是供应商的混淆是混乱。供应商'不是'用户根据业务规则,因为供应商不应该使用该应用程序,但它也具有用户具有的相同属性。在这种特殊情况下,供应商是否应该从User类继承?

2 个答案:

答案 0 :(得分:1)

从逻辑上讲,我会说不。如果我正在设计这样一个系统,我会设想一个User对象,其中包含Login,ChangePassword,GetLastLoginDate等方法。另一方面,Vendor可能有AddProduct,ReceivePurchaseOrder等方法。

仅仅因为它具有诸如名字和姓氏之类的属性而其他此类变量不会使其成为用户。对象不仅仅是属性,还包括动作(方法)。我认为根据我对应用程序和供应商的用户的了解,作为User类的一部分的方法将与供应商非常不同。如果供应商是一种登录到您的应用程序但具有与客户不同的访问权限的用户,那么我会说是。但是,根据您的描述,它们是非常不同的东西。

答案 1 :(得分:1)

有两种方法可以解决这个问题:

1)让User和Vendor都从同一个父对象继承,也许是Account。帐户包含用户和供应商共有的属性,并允许您稍后向供应商提供的用户添加专用属性。

2)如果Vendor的属性始终与User的属性匹配,您可以添加" Can Log In"属性为User并让供应商继承它。这在短期内不那么复杂,但如果用户和供应商分歧,可能会导致问题。