Я сейчас изучаю 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();
}
}
Есть ли способ реструктурировать код, чтобы объединить эти два последних метода, которые почти идентичны?