2008年4月29日 星期二

Pratical in Java- 5 多型(polymorphism)優於instanceof

package rule05;

/**
*
* @author Robert Tan
*
* 實踐05:多型(polymorphism)優於instanceof
* 嗯,理解實踐05是很重要的,但小的認為他的設計不好.
* 要是我設計,我不會多一個getBonus方法出來,因為又多一個型態的員工,除getSalary()與getBonus()之外,
* 又有getCommission()時,那不是又要在Employee介面與子類別,各多加一個getCommission方法.
* 依據物件責任指派原則GRASP的資訊專家樣式(指事情交給擁有相關資訊的物件做-Programmer要自己算出薪資),
* 則範例程式應該改寫成...
*/

public class Main {
public static void main(String [] args) {
Employee [] arr = new Employee [2];
arr[0] = new Manager();
arr[1] = new Programmer();

int payroll = 0;
for (int i=0; i < arr.length; i++) {
payroll += arr[i].getSalary();
}

System.out.println("PAYROLL : " + payroll);
//對出納的呈辦人員而言,他不會關心每個人的薪資項目,他所要知道的是公司這個月到底
//要轉出多少錢到銀行,才足夠支付員工薪水
}
}

interface Employee {
public int getSalary();
}

class Manager implements Employee {
public int getSalary() {
return 500;
}
}

class Programmer implements Employee {

private int salary = 300;
private int bonus = 150;

public int getSalary() {
return salary + getBonus();
}

private int getBonus() {
return bonus;
}
}

----OUTPUT:PAYROLL : 950

沒有留言: