package dev.banking.processor; import dev.banking.model.*; import java.util.Map; public class TransactionProcessor { private final Map accounts; public TransactionProcessor( Map accounts ) { this.accounts = accounts; } public void process(Transaction tx) { if (tx instanceof DepositTransaction deposit) { BankAccount account = accounts.get(deposit.getAccountId()); account.deposit(deposit.getAmount()); } else if (tx instanceof WithdrawTransaction withdraw) { BankAccount account = accounts.get(withdraw.getAccountId()); account.withdraw(withdraw.getAmount()); } else if (tx instanceof TransferTransaction transfer) { BankAccount source = accounts.get(transfer.getSourceAccountId()); BankAccount target = accounts.get(transfer.getTargetAccountId()); source.transfer( target, transfer.getAmount() ); } else { throw new IllegalArgumentException( "Unknown transaction type: " + tx.getClass() ); } } }