0

在一个类中,我有以下开关案例:

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;
}

我总共有七个地方使用过这种类型的开关盒。

4

1 回答 1

2

您会发现您的想法非常不可行,但一个好的方法是在您的枚举中定义方法并依靠动态调度来完成您的 switch 语句的工作。

于 2013-06-16T12:46:42.180 回答