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)); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |