重构代码(如果没有)

Ris*_*ain -1 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

dev*_*per 5

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

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

步骤(1):定义Language界面

    public interface Language {
      addLetters();
    }
Run Code Online (Sandbox Code Playgroud)

步骤(2):定义Language实现

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

    //Implement other Language Classes as well in separate classes
Run Code Online (Sandbox Code Playgroud)

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

    public void setUpBag(Language language){
        language.addLetters();
    }
Run Code Online (Sandbox Code Playgroud)

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

您可以在此处查看更多详细信息.