Java / Refactoring开关案例
发布时间:2020-12-15 04:16:48 所属栏目:Java 来源:网络整理
导读:我试图重构下一个案例: class Gen{ public void startClick(A a,B b,ListC lstC,SortX sort){ for (int i=0; ilstC.size(); i++){ try{ // some code with try and catch statement switch (sort){ case SortA: newOne(a,b,lstc); break; case SortB: other
|
我试图重构下一个案例:
class Gen{
public void startClick(A a,B b,List<C> lstC,SortX sort){
for (int i=0; i<lstC.size(); i++){
try{
// some code with try and catch statement
switch (sort){
case SortA:
newOne(a,b,lstc);
break;
case SortB:
otherfunction(a);
break;
case SortC:
someotherfunction(lstC,a);
break;
}
}
} catch (Exception e){ //some code}
}
}
我尝试创建对象并对其进行处理,就像我们在这里看到的那样:http://sourcemaking.com/refactoring/replace-conditional-with-polymorphism 所以我创建了一个对象:SortOfType,然后对于每种情况,我也创建了一个对象(SortA,SortB,SortC). SortOfType中的函数获取Gen的实例,以及其他Sort对象.我没有成功的是调用类Gen的sortOfType.我该怎么做?这种重构是可能的吗? 解决方法
您可以定义在需要操作时调用的接口
public interface SortX {
public void startClick(A a,C c);
}
public enum SortAEnum implements SortX<A,B,C> {
SortA {
public void startClick(A a,C c) {
newOne(a,c);
}
},SortB {
public void startClick(A a,C c) {
otherfunction(a);
}
},C c) {
someotherfunction(c,a);
}
}
}
public static void startClick(A a,List<C extends OnClick> lstC,SortX sort){
for (int i=0; i<lstC.size(); i++){
sort.startClick(a,lstC.get(i));
}
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
