解决的正确方法是什么:

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上的长时间运行操作。

09-27 07:08