读书人

clean-code: 怎么写出短小的switch语句

发布时间: 2012-07-26 12:01:08 作者: rapoo

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);}}}

这样,每当新增加一种职员的时候,就不用像清单一种去修改客CalculatePay()方法,同时添加新的"重复性的"实例方法,只需要新生成一个Employee的子类,并在工厂EmployeeFactoryImpl中添加一条新的返回类型就行,大大减少了耦合性。当然,这些都是视情况决定的。

读书人网 >软件架构设计

热点推荐