[英]What is the right pattern?
解决的正确方法是什么:
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上调用长时间运行的操作。
你想让用户在启动前取消c.anotherOperation()吗? 如果是这样,那么someOperation()实际上并没有调用它。 相反,它会导致显示ok / cancel对话框,并且UI将ok选项视为导致c.anotherOperation()的命令。 (也许再次通过ClassA和ClassB,取决于他们的职责。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.