Existe um padrão para executar uma cadeia de métodos com base no resultado do anterior, em Java?

CMN:

O caso de uso é que há um conjunto de métodos que precisam ser executadas com base em se o anterior voltou trueou não. Por exemplo:

class Test {
    boolean method1() {...}
    boolean method2() {...}
    boolean method3() {...}

    ...

    void callAll() {
        if(method1()) {
             if(method2() {
                 if(method3() {
                     ...
                 }
             }
        } else {
            error();
        }
    }
}

Tem que haver um elsepara todos os ifs. Existe uma maneira melhor de lidar com este cenário?

Mick Mnemonic:

Gostaria apenas de fazê-lo como este:

void callAll(){
    if(method1() && method2() && method3()){
        // all passed
    } else {
        error();    
    }
}

Java curto-circuitos a &&operação lógica tão falha em um método anterior aqui vai impedir a execução do próximo.

Se em error()que você precisa saber qual dos métodos falharam, você poderia declarar um campo de mensagem de erro para armazenar as informações dentro da classe e defina seu valor correspondente a falha:

private String errorMessage;

//...

boolean method2() {

    // something went wrong
    errorMessage = "Failed to do method2 stuff";
}

São a maneira mais elegante para alcançar o mesmo seria usar a Cadeia de padrão de design responsabilidade e encapsular os métodos boolean em seus próprios objetos manipuladores. Fazer isso seria, contudo, exigir mais refatoração para o código que você tem atualmente e mais informações sobre o seu caso de uso específico.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=196072&siteId=1
Recomendado
Clasificación