【发布时间】:2013-06-16 12:40:32
【问题描述】:
在一个类中,我有以下 switch-case:
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;
}
我总共有七个地方使用过这种类型的开关盒。
【问题讨论】:
-
取决于你的
// some code做什么。 -
@fge 我添加了两个switch-case的用法,请看更新。
-
在您的示例中,
genericDTO的范围是否包括调用代码?
标签: java refactoring switch-statement