具有多个参数的构造函数

Constructor with many parameters

我有一个 class 有(比方说)50 个字段。我只根据用户需要在每次部署程序时使用其中的几个。有没有办法让构造函数既通用又特定于部署?

例如

public class Employee{

    private String id       = "default";
    private String empcat   = "default";
    private String empfam   = "default";
    private String phychar  = "default";
    private String othchar  = "default";
    private String shoesty  = "default";
    private Double shoesiz  = 0.0;
    private String shoesty  = "default";
    private Double shirsiz  = 0.0;
    private String shirsty  = "default";
    .........50 other fields..
}

"User/Customer 1" - 只想使用鞋子的程序,因此用 :
实例化对象 Employee obemp = new Employee("John", 11.5, Dockers); (即 id、shoesiz 和 shoesty)

User/Customer 2 - 只想使用衬衫的程序,因此用 :
实例化对象 Employee obemp = new Employee("John", 42, ABC); (即 id、shirsiz 和 shirsty)

User/Customer 3 - 只想将程序用于家庭,因此用 :
实例化对象 Employee obemp = new Employee("John", "Smith"); (即 id、empfam)

对象创建期间字段的顺序可能不同 - 取决于模型中的用法。

首先,我建议将您的主要 class 分解成更小的部分来管理通常在一起的数据(鞋子信息、衬衫信息、家庭信息等)。

其次,我建议您为客户提供 builder pattern 以便他们可以轻松地仅使用他们可能需要的部分来构建对象。这样,他们就可以做这样的事情:

Employee emp = new EmployeeBuilder("John")
    .withShirtInfo(shirsiz, shirsty)
    .build();

核心 java 中没有通用的方法来执行此操作。但是您可以使用一些设计模式,例如构建器模式。

您还可以创建一个 Employee,其中包含一些最低标准,例如 - id。我们可以假设每个 Employee 都有一个 id。因此,使用 Employee(String id) 构造函数创建一个 Employeeid -

public class Employee{

     //all properties

   public Employee(String id){
      this.id = id;
   }

   //setter methods
}  

假设您创建了一个像这样的 Employee -

Employee employee = new Employee("eng134");   

之后,您可以使用 setter 方法仅将必需的 属性 设置为 employee 对象 -

employee.setShoesiz(9);
employee.setShirsiz(26);