Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正确的模式是什么?_Java_Spring_Class_Design Patterns - Fatal编程技术网

Java 正确的模式是什么?

Java 正确的模式是什么?,java,spring,class,design-patterns,Java,Spring,Class,Design Patterns,解决以下问题的正确方法是什么: Class A { methodDoSomeOperation() { ClassB b.someOperation(.....); .... } ClassB { someOperation(....) { if (this.someCondition) then{ ClassC c.anotherOperation(....) } else { ClassD d.... } } } 方法c.另一种手术耗时较长。我希望

解决以下问题的正确方法是什么:

Class A {

methodDoSomeOperation() {

  ClassB b.someOperation(.....);
....

 }


ClassB {

someOperation(....) {


 if (this.someCondition) then{
   ClassC c.anotherOperation(....)
  } else {
 ClassD d....
 }
}

 }
方法c.另一种手术耗时较长。我希望收到有关所选内容的通知:
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的某些功能?

是否您正在寻找一个新的功能?如果每个类都添加/聚合了它们的部分,这将适用


或者甚至是一个?这可能更适用,因为每个类都可以选择进行处理。假设类A、B和C是处理对象,它们的逻辑将定义它们将处理的操作类型,从而选择性地执行它们的特定处理,然后传递给下一个处理对象。考虑到您似乎将A、B和C链接在一起,每一个都在发挥各自的作用,这似乎最适合您的描述。然后,为了得到哪个处理对象完成了它们的部分,您可以定义一个上下文并沿着链传递它,每个对象都将填充它们的部分。

您是否在寻找一个上下文?如果每个类都添加/聚合了它们的部分,这将适用


或者甚至是一个?这可能更适用,因为每个类都可以选择进行处理。假设类A、B和C是处理对象,它们的逻辑将定义它们将处理的操作类型,从而选择性地执行它们的特定处理,然后传递给下一个处理对象。考虑到您似乎将A、B和C链接在一起,每一个都在发挥各自的作用,这似乎最适合您的描述。然后,为了得到某个处理对象的指示,可以定义上下文并将其传递到链上,每个对象都会填充它们的部分。

你会考虑观察者模式的某种形式吗?


任何靠近UI的类(可能是类A?)都可以注册为类B的观察者。这可以提前完成,也可以通过添加参数作为调用B.SomeOperation()的一部分完成。然后,当你检查B.SoMeVeCube,你可以调用注册的观察员,然后调用长运行的操作C.< /P> < P>你会考虑某种形式的观察者模式吗?
任何靠近UI的类(可能是类A?)都可以注册为类B的观察者。这可以提前完成,也可以通过添加参数作为调用B.SomeOperation()的一部分完成。然后,当您执行检查B.someCondition时,您可以调用已注册的观察者,然后调用C上的长时间运行操作。

您想让用户在开始之前取消C.另一个操作()吗?如果是这样,那么someOperation()实际上不会调用它。相反,它会导致显示“确定/取消”对话框,用户界面会将“确定”选项视为一个命令,该命令将导致c.anotherOperation()。(可能再次通过ClassA和ClassB,具体取决于他们的职责。)

您想让用户在开始之前取消c.另一个操作()吗?如果是这样,那么someOperation()实际上不会调用它。相反,它会导致显示“确定/取消”对话框,用户界面会将“确定”选项视为一个命令,该命令将导致c.anotherOperation()。(可能再次通过ClassA和ClassB,取决于他们的职责。)

装饰者或责任链似乎与此问题无关。对侦听器模式不太确定。我将添加更多细节来更好地解释自己。装饰者或责任链似乎与此问题无关。对侦听器模式不太确定。我将添加更多细节,以便更好地解释我自己。根据方法结果提供条件开关,完全在XML中配置,而类彼此不了解。看看它是否适合您的项目,它根据方法结果提供条件切换,完全用XML配置,而类彼此不了解。看看它是否适合你的项目