责任链——通过所有链传递请求
Chain of Responsibility - pass the request through all the chains
我浏览了网页,但找不到问题的答案...
假设我有 3 条链。我希望请求通过所有 3 个链(链是否可以处理请求并不重要)。是否可以使用 CoR 模式来解决这个问题?
为了更好地解释它 - 我有一个必须通过几组规则的列表。如果它通过了第一条规则,则列表保持不变。然后继续第二条规则,第二条规则更改列表。更改后的列表进入第 3 条规则,它通过并保存更改后的列表。
嗯,我没有看到任何反对不这样做的理由。
您可以简单地声明您的 Processor
或者您如何称呼它:
abstract class Processor {
private Processor successor;
public void setSuccessor(Processor successor) { this.successor = successor; }
public List process(List input) {
List processed = this.internalProcess(input);
if (successor != null) { return successor.process(processed); }
return processed;
}
protected abstract List internalProcess(List input);
}
然后你可以定义例如:
public class ProcessorNoProcess extends Processor {
@Override protected List internalProcess(List input) {
// do nothing
return input;
}
}
你问的是这个吗?
我浏览了网页,但找不到问题的答案...
假设我有 3 条链。我希望请求通过所有 3 个链(链是否可以处理请求并不重要)。是否可以使用 CoR 模式来解决这个问题?
为了更好地解释它 - 我有一个必须通过几组规则的列表。如果它通过了第一条规则,则列表保持不变。然后继续第二条规则,第二条规则更改列表。更改后的列表进入第 3 条规则,它通过并保存更改后的列表。
嗯,我没有看到任何反对不这样做的理由。
您可以简单地声明您的 Processor
或者您如何称呼它:
abstract class Processor {
private Processor successor;
public void setSuccessor(Processor successor) { this.successor = successor; }
public List process(List input) {
List processed = this.internalProcess(input);
if (successor != null) { return successor.process(processed); }
return processed;
}
protected abstract List internalProcess(List input);
}
然后你可以定义例如:
public class ProcessorNoProcess extends Processor {
@Override protected List internalProcess(List input) {
// do nothing
return input;
}
}
你问的是这个吗?