今日、私はinstanceofの使用を避けることについてthis articleを読んでいます。 これは私には絶対に意味があります。私もvisitor patternを知っています。エンティティでinstanceofを使用しないようにしてください
@Entity
public abstract class Employee {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer employeeId;
private String name;
}
@Entity
public class FullTimeEmployee extends Employee {
protected Integer salary;
public Integer getSalary() {
return salary;
}
public void setSalary(Integer salary) {
this.salary = salary;
}
}
@Entity
public class PartTimeEmployee extends Employee{
protected Float hourlyWage;
public Float getHourlyWage() {
return hourlyWage;
}
public void setHourlyWage(Float hourlyWage) {
this.hourlyWage = hourlyWage;
}
}
このようなメソッドを呼び出すときにどのように私はinstanceofを使用しないようでした:
は、私は次のような状況を考えてみましょうか?
public void convertEmployee(Employee employee) {
if (employee instanceof FullTimeEmployee) {
FullTimeEmployee fullTimeEmployee = (FullTimeEmployee) employee;
calcSalaray(fullTimeEmployee);
} else if (employee instanceof PartTimeEmployee) {
PartTimeEmployee partTimeEmployee = (PartTimeEmployee) employee;
calcHourlywage(partTimeEmployee);
}
}
メソッドのコードを... no codeに置き換える必要があります。それは何もしません。どのようなことをしているのかわからなくても、このメソッドを実装する方法をアドバイスできますか?とにかく、あなたが多型性、および訪問者のパターンを知っているなら、あなたはあなたが望むものを実装することができます。 –
一般に、各クラスの操作を、Employeeクラスの抽象メソッドとして実装または定義されているメソッドに移動する方法があります。いくつかのことについては、これはお勧めできませんが、何をしようとしているのかわからなければ、その点についての入力はできません – romeara
ごめんなさい。従業員のタイプに応じていくつかの計算を行いたいと仮定しましょう。編集された質問 –