前人的至理名言,看看之前我写的代码,应该被赏了n个巴掌了吧。
看看下面的例子:
1.被赏巴掌的例子
package com.tn.salary; public interface Employ { int getSalary(); }
package com.tn.salary; public class Manager implements Employ { public int getSalary() { return 5000; } public int getBonus() { return 300; } }
package com.tn.salary; public class Programmmer implements Employ { public int getSalary() { return 3000; } }
package com.tn.salary; public class Payroll { /** * @param args */ public static void main(String[] args) { Payroll payroll = new Payroll(); payroll.caculatePayRoll(new Programmmer()); payroll.caculatePayRoll(new Manager()); } private int caculatePayRoll(Employ em) { int money = em.getSalary(); if (em instanceof Manager) { money += ((Manager) em).getBonus(); } System.out.println("the total money is"+money); return money; } }
2.脸部保持完整的例子
package com.tn.salary.refector; public interface Employ { int getSalary(); int getBonus(); }
package com.tn.salary.refector; public class Manager implements Employ { private static final int MANAGER_MONTHLY_BONUS = 300; private static final int MANAGER_MONTHLY_SALARY = 5000; public int getSalary() { return MANAGER_MONTHLY_SALARY; } public int getBonus() { return MANAGER_MONTHLY_BONUS; } }
package com.tn.salary.refector; public class Programmmer implements Employ { private static final int PROGRAMMER_MONTHLY_BONUS = 0; private static final int PROGRAMMMER_MONTHLY_SALARY = 3000; public int getSalary() { return PROGRAMMMER_MONTHLY_SALARY; } public int getBonus() { return PROGRAMMER_MONTHLY_BONUS; } }
package com.tn.salary.refector; public class Payroll { /** * @param args */ public static void main(String[] args) { Payroll payroll = new Payroll(); payroll.caculatePayRoll(new Programmmer()); payroll.caculatePayRoll(new Manager()); } private int caculatePayRoll(Employ em) { int money = em.getSalary()+em.getBonus(); System.out.println("the money is"+money); return money; } }