演化架构与紧急设计: 对设计进行重构
2009-11-05 00:00:00 来源:WEB开发网sort() 方法使用 Collecions.sort() 方法,传递雇员列表和一个生成的 comparator,调用此类的第三个方法。getComparatorFor() 方法充当一个工厂,根据传入的条件动态生成匿名 comparator 类。它通过 getSelectionCriteriaMethod() 使用反射从 employee 类检索相应的 get 方法,对进行比较的每个实例调用该方法,并返回结果。清单 7 中的单元测试展示了这个类对两个字段的实际应用:
清单 7. 测试泛型 comparatorpublic class TestEmployeeSorter {
private EmployeeSorter _sorter;
private ArrayList<DryEmployee> _list;
@Before public void setup() {
_sorter = new EmployeeSorter();
_list = new ArrayList<DryEmployee>();
_list.add(new DryEmployee("Homer", 20000, 1975));
_list.add(new DryEmployee("Smithers", 150000, 1980));
_list.add(new DryEmployee("Lenny", 100000, 1982));
}
@Test public void name_comparisons() {
_sorter.sort(_list, "name");
assertThat(_list.get(0).getName(), is("Homer"));
assertThat(_list.get(1).getName(), is("Lenny"));
assertThat(_list.get(2).getName(), is("Smithers"));
}
@Test public void salary_comparisons() {
_sorter.sort(_list, "salary");
assertThat(_list.get(0).getSalary(), is(20000));
assertThat(_list.get(1).getSalary(), is(100000));
assertThat(_list.get(2).getSalary(), is(150000));
}
}
更多精彩
赞助商链接