Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails中域类的继承或标志可以吗?_Grails_Inheritance_Grails Domain Class - Fatal编程技术网

Grails中域类的继承或标志可以吗?

Grails中域类的继承或标志可以吗?,grails,inheritance,grails-domain-class,Grails,Inheritance,Grails Domain Class,我正在制作一个医生和病人都可以登录的网站 class Doctors { String firstName String lastName String email String password String hospitalName String NPINumber } 及病人 class Patients{ String firstName String lastName String email Strin

我正在制作一个医生和病人都可以登录的网站

class Doctors {
    String firstName
    String lastName
    String email
    String password
    String hospitalName
    String NPINumber
}
及病人

class Patients{
    String firstName
    String lastName
    String email
    String password
}
很明显,有很多重叠字段只用于身份验证/登录目的,我想知道继承是个好主意,还是应该在单个类中创建一个标志

因此,有两种选择:

备选方案1

备选方案2


我不确定我应该选择哪种设计,以便将来可以扩展

选项1更确切地说是面向对象的。然而,我仍然会做一点改变,以使设计更好。与其扩展User,不如使用包含一些公共属性的User属性。扩展用户类可能会使设计更加复杂。也许我能帮你

另外,建议不要使用复数形式的类名。想象一下,它是自身的实体,而不是实体的集合。很明显,你的班级医生,例如,代表一位医生。不超过一个。所以你应该使用医生、病人和使用者。
希望能有所帮助。

我个人更喜欢扩展类用户。即使您将来添加更多数据,该方法也可以完成工作,并将集中化,这更易于阅读、维护,是一种良好的做法。
class Users{
    String firstName
    String lastName
    String email
    String password
}

class Doctors extends Users {
    String hospitalName
    String NPINumber
}


class Patients extends Users{
}
class Users{
    String firstName
    String lastName
    String email
    String password
    boolean isDoctor
    String NPINumber
    String hospitalName
}