Por que eu usaria uma cadeia de responsabilidade sobre uma declaração de chave

Considere que você obteve várias validações. Essas validações só terão efeito se o objeto a ser inspecionado for de um determinado tipo. Por que eu usaria uma cadeia de responsabilidade sobre uma declaração de chave?

Exemplo com cadeia de responsabilidade

public class Executor {

@Inject
private ValidatorFactory validatorFactory;

public void execute(Konfiguration konfig) {
    List<Statement> statements = konfig.getStatements();
    AbstractValidator validator = validatorFactory.create();
    for (Statement statement : statements) {
        if (validator.validate(statement.getType())) {
            crudService.execute(statement.getSql());
        }
    }
}

O validatorFactory cria a cadeia de validadores. Um validador seria semelhante

public class AddPrimaryKeyValidator extends AbstractValidator {

@Override
public boolean validate(Statement statement) {
    if (SqlType.ADD_PK.getTyp().equals(statement.getType())) {
        return doesTableAndPrimaryKeyExist(statement.getTabName());
    }
    return successor.validate(statement);
}

Exemplo com instrução switch

public void execute(Konfiguration konfig) {
    List<Statement> statements = konfig.getStatements();
    for (Statement statement : statements) {
        switch (statement.getType()) {
        case "ADD_PK":
            if (doesTableAndPrimaryKeyExist(statement.getTabName())) {
                frepCrudService.execute(statement.getSql());
            }
            // more cases
        }
    }
}

questionAnswers(2)

yourAnswerToTheQuestion