clean-code: 如何写出短小的switch语句。
读clean code有感,加上自己的一些心得,作此笔记。
写出只做一件事的switch语句很难,Switch天生要做N件事,不行我们总无法避免使用switch语句,不过还是能够确保每个switch都埋藏在较低的抽象层级,而且永远都不会重复。当然,我们利用多态来实现这一点。
请看下面的代码,它呈现了可能依赖于雇员类型的仅仅一种操作。
代码, Payroll.java:
public interface Employee{public boolean isPayday();public Money calculatePay();public void deliverPay(Money pay);}public interface EmployeeFactory{public Employee makeEmployee(EmployeeRecord r) throws InvalidEmployeeType;}public class EmployeeFactoryImpl implements EmployeeFactory{public Employee makeEmployee(EmployeeRecord r) throws InvalidEmployeeType{switch(r.type){case COMMISSIONED:return new CommissionedEmployee(r);case HOURLY:return new HourlyEmployee(r);case SALARIED:return new SalariedEmployee(r);default:throw new InvalidEmployeeType(r.type);}}}