Mucho se ha oído o leído sobre la Programación Orientada a Aspectos (AOP), pero ¿qué es realmente? Simplemente, es una ayuda para los programadores que permite reducir código de rutinas que siempre deberían ejecutarse y no se puede usar la herencia. Además, cada lógica de negocio solo tendrá lógica de negocio, y no código adicional que son repetitivas y no son parte del negocio. Por ejemplo, un método que se encargue de una transferencia de dinero, debería ser tan simple como esto void transfer(Account fromAccount, Account toAccount, int amount){ if (fromAccount.getBalance() < class="br0">) { throw new InsufficientFundsException(); } fromAccount.withdraw(amount); toAccount.deposit(amount); } Pero realmente, se vuelve así: void transfer(Account fromAccount, Account toAccount, int amount) throws Exception { if (!getCurrentUser().canPerform(OP_TRANSFER)) { throw new SecurityException(); } if (amount < 0) { throw new NegativeTransferException(); }