Какой подход лучше выполнять метод только один раз внутри цикла? - PullRequest
0 голосов
/ 17 января 2019

У меня есть этот случай, мне нужно выполнить Подтвердить субмодуль только один раз после того, как одна транзакция считается успешной для списка транзакций.
поэтому внутри цикла мне нужно проверить, выполняет ли программа «Утвердить» или нет. В настоящее время я думаю о 2 способах сделать это

  1. Я использую значение isApproved для проверки, обновляя его собственное значение с помощью возвращаемого значения из метода executeApproveSubModule:

    List<Transaction> transactionList = request.getTransactionList();
    boolean isApproved = false;
    for(Transaction transaction : transactionList) {
         //transaction business logic, long code
    
         transaction.setStatus("Success");
         //approve transacion sub module
         isApproved = performApproveSubModule(isApproved, transaction);
    }
    
    //method
    private boolean performApproveSubModule(boolean isApproved, Transaction transaction) {
        if(!isApproved) {
            //approve business logic
    
            // update isApproved value to true
            isApproved = true;
        }
        return isApproved;
    }
    
  2. Я также использую значение isApproved для проверки, но я передаю его в качестве ссылки для обновления значения с помощью класса Wrapper:

    AtomicBoolean isApproved = new AtomicBoolean();
    for(Transaction transaction : transactionList) {
        //transaction business logic, long code
    
        transaction.setStatus("Success");
        //approve transacion sub module
        performApproveSubModule(isApproved, transaction);
    }
    
    //method
    private void performApproveSubModule(AtomicBoolean isApproved, Transaction transaction) {
        if(!isApproved.get()) {
            //approve business logic
    
            // update isApproved value to true
            isApproved.set(true);
        }
    }
    

    какую мне использовать? я должен использовать другой правильный путь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...