我可以从解决这个 FizzBu​​zz 式问题的解决方案中消除嵌套的 if-else 吗?

Can I eliminate the nested if-else from my solution to this FizzBuzz-style pro​blem?

我被要求解决以下问题。

示例输入和输出

而我的解决方案如下:

//Class 

public class CoffieScriptGenerator {

    public String caffeineBuzzz(Integer number) {

        if(isDivisbleByThreeAndFour(number))
        {
            if(isEven(number))
            return "CoffeeScript";
            else
            return "Coffee";
        }
        if(isDivisbleByThree(number))
        {
            if(isEven(number))
            return "JavaScript";
            else
            return "Java";
        }
        return "mocha_missing!";


    }

    private boolean isEven(Integer number) {
        return number%2==0; 
    }

    private boolean isDivisbleByThreeAndFour(Integer number) {

        return isDivisbleByThree(number) && number%4==0;
    }

    private boolean isDivisbleByThree(Integer number) {
        return number%3==0;
    }

}

请提供重构和改进它的建议,以及我如何借助 Strategy 等模式改进这种嵌套 if-else。

解决这类问题的一个好的设计模式是从顶部的空字符串开始。然后,当您的代码向下流动并检查某些条件时,您可以在执行过程中将文本附加到字符串的末尾。然后,当您到达该方法的末尾时,您的字符串已全部构建完毕,您可以简单地 return 它。

这种设计的优点是你的方法只有一个出口点(只有一个return语句)。