AOP解决学术范例

时间:2014-12-02 16:44:05

标签: ios oop design-patterns aop modularity

我在Wikipedia http://en.wikipedia.org/wiki/Aspect-oriented_programming

中找到了一个AOP示例

这是有趣的部分:

void transfer(Account fromAcc, Account toAcc, int amount, User user, Logger logger)
    throws Exception
{
    logger.info("Transferring money…");

    if (!isUserAuthorised(user, fromAcc)) {
        logger.info("User has no permission.");
        throw new UnauthorisedUserException();
    }

    if (fromAcc.getBalance() < amount) {
        logger.info("Insufficient funds.");
        throw new InsufficientFundsException();
    }

    fromAcc.withdraw(amount);
    toAcc.deposit(amount);
    database.commitChanges();  // Atomic operation.

    logger.info("Transaction successful.");
}

记录器在方法中出现3次。如果所有AOP容器通常在方法执行之前或之后都有注入选项,我怎么能为这3个特定情况注入它。 以下是可在IOS下使用的AOP容器的链接 https://github.com/tokorom/BlockInjection

谢谢!

1 个答案:

答案 0 :(得分:0)

首先,方法可以注入方法。您也可以建议(包装)已经由另一方面建议的方法。 在您的情况下,它将看起来像3个方面:日志方面(围绕),授权方面(之前),正平衡方面(之前)。