About Switch Case

About Switch Case

About Switch Case

About Switch Case

1
2
3
4
5
6
7
8
9
10
11
12
public Money calculatePay(Employee e) throw InvalidEmployeeType {
switch (e.type) {
case COMMISSIONED:
return calculateCommissionedPay(e);
case HOURLY:
return calculateHourlyPay(e);
case SALARIED:
return calculateSalariedPay(e);
default:
throw new InvalidEmployeeType(e.type);
}
}

以上functoion幾個問題,第一點太冗長,如果再加入新的職員型態時,
這個函式會變得更長。第二點,這個函式做超過一件事情。第三點,因有
超過一個理由來改變此函式,所以違反單一職責原則。第四點,當新型態
加入後,函式就必須有所改變,違反開放閉合原則。最糟糕的問題是,
程式有其它數不清數量的函式和這個函式有相同的結構。
ex:
isPayday(Employee e, Date date)
deliverPay(Employee e, Money pay)