用于创建新用户的对象设计

Object design for create new user

我这周遇到了一个问题,所以我决定使用一种我不确定是否正确的方法。所以我需要你的帮助来帮助我理解我可能做错了什么。

我有两种类型的用户:内部用户和外包用户,他们的某些属性与另一种不同。我想做的是。

所以我创建了一个员工 class,它聚合了所有公共属性

public abstract class Employee {

private String name;
private String address;
private String telephone;
private String cpf;
private Integer age;

外包 class 还有 2 个属性

public class Outsourced extends Employee {

private String companyName;
private Date endDate;}

还有内部用户的 Internal。

public class Internal extends Employee {}

使用这个内部 class 是正确的还是我应该使用员工作为内部?有一个没有属性的 class 对我来说似乎是错误的,但同时我认为将员工 class 用于内部用户是通用的,如果有一天我们创建一种新的用户我们我有一些问题。

无论如何感谢您的帮助:)

完全正确。

首先,您可能希望稍后向 Internal 追加一些特殊的逻辑或字段。 staffNumber 例如.. 一个单独的 class 的存在太容易了。

其次,有时您可能希望在代码中将 InternalOutsourced 实例分开。

我觉得还不错。使用这种方法,如果有一天您需要向所有类型的员工添加一些常见的 属性(通过将其添加到 Employee),或者添加一些新的 属性 到 OutsourcedInternal 或者甚至创建一个新的 Employee 类型(通过扩展抽象 Employee)。我会说你很高兴继续实施。