gpt4 book ai didi

java - 如何设计一个在子项之间执行不同逻辑的 Composite 对象

转载 作者:行者123 更新时间:2023-12-02 07:42:13 24 4
gpt4 key购买 nike

我正在设计一个框架,并且有一些复合对象,这些对象具有异步或同步执行的子对象。对于同步执行的,通常在某个子项完成后必须在复合对象中运行某种类型的逻辑。

问题是有许多子项目,对于每个子项目,每个子项目之后可能会进行不同的处理,并且因为我的目标是简单性,所以我将同步项目放在队列上,并且复合项目将只需将它们一一弹出并运行它们..现在跟踪子项目的最干净的方法是什么,这样我就可以说“在子项目#2完成后,获取它返回的数据并执行 xyz()” ?

最佳答案

考虑类似 Visitor Pattern 的内容如果您的后处理选项数量有限。

复合 Material 将为每种可能需要的后处理类型实现一个方法,子项将实现一个方法,该方法采用复合 Material 的实例并调用其中一个后处理方法,具体取决于哪种类型的后处理方法。它是子项目。由于您已经执行子项,因此您可以让它们在该方法末尾调用后处理方法。

跳过接口(interface)定义的示例:

class CompositeA implements Composite {
public ? process() {
for (Sub subItem : subItems) {
subItem.execute();
subItem.postProcess(this);
}
}

public ? postProcessA(SubA subItem) {
//do something with SubA
}

public ? postProcessB(SubB subItem) {
//do something with SubB
}
}

class CompositeB implements Composite {
public ? process() {
for (Sub subItem : subItems) {
subItem.execute();
subItem.postProcess(this);
}
}

public ? postProcessA(SubA subItem) {
//do something else with SubA
}

public ? postProcessB(SubB subItem) {
//do something else with SubB
}
}

class SubA implements Sub {
public ? execute() {
//doSomething
}

public ? postProcess(Composite composite) {
comp.postProcessA(this);
}
}

class SubB implements Sub {
public ? execute() {
//doSomething
}

public ? postProcess(Composite composite) {
comp.postProcessB(this);
}
}

关于java - 如何设计一个在子项之间执行不同逻辑的 Composite 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11436485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com