我目前正在学习Java。我有一个带有超类(IndexCard)的项目,其中包括两个子类(EmployeeIndexCard和CustomerIndexCard)。这两个子类非常相似,但它们因其实例变量而彼此不同,并且因此具有不同的构造函数。
以下是它们:
class EmployeeIndexCard extends IndexCard {
public WorkArea workArea ;
protected String password;
public employeeIndexCard(String name, String password, String adress, String phone, String email, String workArea) {
super(name, adress, phone, email);
this.password = password;
this.workArea = WorkArea.valueOf(workArea);
}
}
class CustomerIndexCard extends IndexCard {
public customerIndexCard(String name, String adress, String phone, String email) {
super(name, adress, phone, email);
}
}
我想知道我做错了什么,因为为了创建这些类的实例,我创建了两个非常相似的方法:
/**
* Create an instance of EmployeeIndexCard.
*/
public static void employeeIndexCard(String name, String dni, String password, String adress, String phone, String email, String workArea) {
if (Utils.validateDni(dni) && !IndexCard.list.containsKey(dni)) {
IndexCard.list.put(dni, new EmployeeIndexCard(name, password, adress, phone, email, workArea));
} else {
throw new InvalidParameterException();
}
}
/**
* Create an instance of CustomerIndexCard.
*/
public static void customerIndexCard(String name, String dni, String adress, String phone, String email) {
if (Utils.validateDni(dni) && !IndexCard.list.containsKey(dni)) {
IndexCard.list.put(dni, new FichaCliente(name, adress, phone, email));
} else {
throw new InvalidParameterException();
}
}
有没有办法重新组织代码,将这两个几乎相同的方法合并起来?