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 つのメソッドにのみ配置できる別の方法はありますか?操作をパラメーターとして渡すことでそのメソッドを呼び出し、同じ仕事をしますか?


使い方-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;
}

このタイプのスイッチケースを使った箇所は全部で7箇所あります。

4

1 に答える 1

2

あなたのアイデアはまったく機能しないことがわかりますが、良いアプローチは、列挙型内でメソッドを定義し、switch ステートメントの作業を動的ディスパッチに依存することです。

于 2013-06-16T12:46:42.180 に答える