Хорошо, я не полностью понял философию, почему AOP AspectJ хорош для. Теперь я реализовал ведение логов и транзакций при снятии денег с банковского счета. Хорошо, почему это хорошо делать? Я мог бы также реализовать элемент управления в том же файле класса, где я также сохранил все свои банковские методы (снятие, внесение, баланс и т. Д.). И при ведении журнала я мог бы создать для него новый класс, а затем сделать его экземпляр в классе BankAccount.
Так зачем мне для этого использовать AOP, AspectJ? Я не до конца понял идею ...
Вот мой файл аспектов
public aspect SafeWithdrawal {
pointcut checking(BankAccount bk, float x): execution(* BankAccount.withdraw(float)) && target(bk) && args(x);
public static void BankAccount.LogChange(String str){
System.out.println(str);
}
before(BankAccount b, float x) : checking(b, x) {
if(b.getBalance() >= x) {
BankAccount.LogChange("Account changing. $" + x + " withdrawn...");
} else {
BankAccount.LogChange("Account does not have. $" + x + " to withdrawn...");
}
}
}