【发布时间】:2013-03-04 15:33:52
【问题描述】:
我有三个具体的类-
public class ClassA{
public C1 processA(C1 c1){
//lots of ugly code that copies
//one field to another
//return c1
}
public List<C1> processA(List<C1> c1s){
//iterate over c1s
//call process(c1)
//add returned value to list
//return list
}
}
public class ClassB{
public C2 processB(C2 c2, C3 c3){
//lots of ugly code that copies
//one field to another
//return c2
}
public List<C2> processB(List<Pair<C2, C3> pairs){
//iterate over pairs
//call process(c2, c3)
//add returned value to list
//return list
}
}
public class ClassC{
public C4 processC(C4 c4, C5 c5, C1 c1){
//lots of ugly code that copies
//one field to another
//return c4
}
public List<C4> processC(List<Triple<C4, C5, C1> triples){
//iterate over triples
//call process(c4, c5, c1)
//add returned value to list
//return list
}
}
我想删除 process(List...) 方法中的重复项。我不关心 processA(C1)、processB(C2,C3)、processC(C4,C5,C1) 方法,它们将保持不变。在重构此代码时我有哪些选择?
【问题讨论】:
-
从重命名方法、变量和类型名开始重构。
-
更改变量和方法名称。这是我的第一步。
-
创建接口并覆盖
process() -
不应该你所有的第二个构造函数都返回一些
Collection,正如你的评论所说,return list无处不在。 -
确实如此。谢谢!。我已经更正了。
标签: java design-patterns refactoring