解决的正确方法是什么:
Class A {
methodDoSomeOperation() {
ClassB b.someOperation(.....);
....
}
ClassB {
someOperation(....) {
if (this.someCondition) then{
ClassC c.anotherOperation(....)
} else {
ClassD d....
}
}
}
方法
c.anotherOperation
需要很长时间。我希望收到有关选定内容的通知:c.anotherOperation(....)
或d.....
,以便在调用c.anotherOperation
之前在用户界面中显示。就像是:
someOperation(....) {
if (this.someCondition) then{
//notify ClassA what was selected and continue
ClassC c.anotherOperation(....)
} else {
ClassD d....
}
}
显然,可以在
ClassA
中调用某些方法,但这会产生强大的耦合和混乱的逻辑。是否可以使用Spring的某些功能? 最佳答案
您会考虑某种形式的观察者模式吗?
可以将最接近UI的类(可能是A类)注册为B类的观察者。这可以预先完成,也可以通过添加参数作为B.SomeOperation()调用的一部分进行。然后,当您执行B.someCondition检查时,可以调用注册的观察者,然后调用C上的长时间运行操作。