在课程中,我有以下开关案例:
switch(articleStep.getDeveloper()) {
case CENTRAL:
switch(articleStep.getArticleType()) {
case POSM:
//some code
break;
case PROMOTION_PACK:
//some code
break;
}
break;
case LOCAL:
//some code
break;
}
有多种方法。只有内部操作不同(//some code
)。
是否有任何替代方法可以将switch-case放在一个方法中,我将通过将操作作为参数传递来调用该方法,它将执行相同的工作?
使用-1
switch(articleStep.getDeveloper()) {
case CENTRAL:
switch(articleStep.getArticleType()) {
case POSM:
centralPOSMArticle = new AddManageArticleInDTO<ManageCentralPOSMArticleInDTO>();
centralPOSMArticle.setManageArticle(new ManageCentralPOSMArticleInDTO());
setMandetoryParameterToAddManageArticleInDTO(centralPOSMArticle);
break;
case PROMOTION_PACK:
centralPromotionPackArticle = new AddManageArticleInDTO<ManageCentralPromotionPackArticleInDTO>();
centralPromotionPackArticle.setManageArticle(new ManageCentralPromotionPackArticleInDTO());
setMandetoryParameterToAddManageArticleInDTO(centralPromotionPackArticle);
break;
}
break;
case LOCAL:
break;
}
用法-2
switch(articleStep.getDeveloper()) {
case CENTRAL:
switch(articleStep.getArticleType()) {
case POSM:
genericDTO = centralPOSMArticle.getManageArticle();
break;
case PROMOTION_PACK:
genericDTO = centralPromotionPackArticle.getManageArticle();
break;
}
break;
case LOCAL:
break;
}
我使用这种开关盒共有七个地方。
答案 0 :(得分:2)
您会发现您的想法非常不可行,但一个好的方法是在枚举中定义方法并依靠动态调度来完成switch语句的工作。