重构代码(如果没有)

时间:2016-11-06 17:06:22

标签: java refactoring

我试图重构代码,我遇到了这段代码。 你能否在其中建议任何重构,请说出你使用的折射。

private void setUpBag(String language){
    if(language.equals("english")){
        /* add letters with English distribution to bag */
    }
    else if(language.equals("french")){
        /* add letters with French distribution to bag */
    }
    else if(language.equals("russian")){
        /* add letters with Russian distribution to bag */
    }
    else{
        throw new IllegalArgumentException("Unknown language");
    }
}

1 个答案:

答案 0 :(得分:5)

您实际上违反了SRP(单一责任原则),因此无论何时添加新语言,您都需要触摸此代码库。

为了避免使用if else statements的大量列表,您需要一种松散耦合的设计,其中addLetters()行为应该在单独的LanguageImpl类中实现(如英语等)。 。)如下面的代码所示,它使用状态模式:

步骤(1):定义Language界面

    public interface Language {
      addLetters();
    }

步骤(2):定义Language实施

    public English implements Language {
      //implement addLetters() for English
    }

    //Implement other Language Classes as well in separate classes

步骤(3):修改setUpBag对象的Language方法

    public void setUpBag(Language language){
        language.addLetters();
    }

每个Language类都遵循SRP,这是设计OOP应用程序的关键,即每个语言类只处理特定的行为。

您可以查看here了解详情。