可以在继承设计中将对象作为客户和用户

时间:2013-06-21 18:26:53

标签: java jpa persistence

我这里有设计问题。我有三个分支。

- 父亲

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "Persona", schema = "dbo", catalog = "cxc")
Class Person

Class User extends Person
Class Customer extends Person

我怀疑这个设计是否适合我的申请,因为de customer可以访问aplicacation查看遗产帐户并付款。

如果客户不能同时成为用户并保持数据的完整性(因为现实生活中只有一个人),我不知道是否可行。

提前感谢

4 个答案:

答案 0 :(得分:0)

您只能从Java中的一个类扩展。但是,您可以实现许多接口。这意味着,根据您的设计,用户和客户不能相同。

答案 1 :(得分:0)

或许Customer应该是一个接口,而User可以实现Customer。这将允许您让用户表现得像用户和客户(如果我理解你正确的是你想要的),如果你想限制只是客户部分,只需通过它的界面引用对象:

Customer customer = (Customer)/* the user object. */

这意味着用户的类定义如下所示:

class User extends Person implements Customer {

答案 2 :(得分:0)

在Java中,只允许单继承。

关于设计我会做的是:

类用户扩展人

然后根据用户用户的不同,您可以跳过Customer类并在User类中添加用户类型的其他属性。 它可以是例如枚举:

enum UserType {
  Customer,
  User,
  Boss,
  // etc...
}

但是,如果客户背后存在巨大的业务逻辑,并且用户和客户之间必须明确区别,那么设计就没有错。

答案 3 :(得分:0)

根据您的说明:de customer can acces to the aplicacation to view the estate acount, and make payments。在我看来,view the estate acountmake payments是客户拥有的特权客户本身就是一种角色。

我不确定您为什么要首先将其建模为客户用户,也许应用程序的某些背景将在这里提供帮助。