0


我有一个要求,我将通过调用公共方法 action() 以链模式 ClassA->ClassB->ClassC 执行一组操作。理想情况下,ClassA、ClassB 和 ClassC 实现具有方法 action() 的接口 IClass。

在 action() 方法结束时,它的状态(失败/成功)应该在数据库中更新。
所以我的疑问是,
- 利用 Aspect 对方法“动作”的建议并在动作执行后更新 Aspect 类中的状态是否是一个好的设计。
- 我们既然是更新动作状态的核心逻辑,它不应该像方面一样成为横切框架的一部分吗?

4

1 回答 1

0

我不认为方面是实现上述行为的正确选择。Aspect 是跨多个类/模块使用的通用代码。

典型的例子是transaction management, logging

更好的选择可能是编写一个接口和实现,如下所示 -

public interface StatusUpdater{
    updateActionStatus();
} 

让一个类实现这个接口。

public class StatusUpdaterImpl implements StatusUpdater{
    updateActionStatus();
}

将此类注入Class A , B and C并将数据库更新委托给此类。

如果需要,您将可以灵活地更改 Db 更新行为。

多一个类注入StatusUpdater接口并注入目标

于 2018-03-23T13:48:07.407 回答