public class FXService { private final CurrencyConverter currencyConverter; private final BankService bankService; private final double commissionPer; public String transfer(Money money, BankAccount destinationAccount, Currency target) { String sourceCurrency = money.currency().name(); String targetCurrency = target.name(); double commissionAmount = calculateCommission(money.amount()); double fxRate = currencyConverter.convert(1, sourceCurrency, targetCurrency); // First interaction double transferAmount = calculateTransferAmount(money, commissionAmount); double totalAmount = applyFxRate(transferAmount, fxRate); String transactionId = bankService.deposit(totalAmount, destinationAccount); // Second interaction return transactionId; } }