gpt4 book ai didi

java - 增量代码的设计模式

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:15 25 4
gpt4 key购买 nike

根据业务逻辑,其中一个方法的输出用作另一个方法的输入。逻辑具有线性流程。为了模拟这种行为,现在有一个包含所有内容的 Controller 类。

很乱,loc太多,不好修改。异常处理也非常复杂。个别方法会做一些处理,但全局异常会冒泡,这涉及很多 try catch 语句。

是否存在解决此问题的设计模式?

示例 Controller 类代码

try{
Logic1Inputs logic1_inputs = new Logic1Inputs( ...<some other params>... );
Logic1 l = new Logic1(logic1_inputs);
try{
Logic1Output l1Output = l.execute();
} catch( Logic1Exception l1Exception) {
// exception handling
}

Logic2Inputs logic2_inputs = new Logic2Inputs(l1Output);
Logic2 l2 = new Logic2(logic2_inputs);
try{
Logic2Output l2Output = l2.execute();
} catch( Logic2Exception l2Exception) {
// exception handling
}

Logic3Inputs logic3_inputs = new Logic3Inputs(l1Output, l2Output);
Logic3 l3 = new Logic3(logic2_inputs);
try{
Logic3Output l3Output = l3.execute();
} catch( Logic3Exception l3Exception) {
// exception handling
}
} catch(GlobalException globalEx){
// exception handling
}

最佳答案

我认为这叫做管道:http://en.wikipedia.org/wiki/Pipeline_%28software%29此模式用于数据流经一系列任务或阶段的算法。

您可以搜索执行此操作的库 ( http://code.google.com/p/pipelinepattern ) 或尝试您自己的 java 实现

基本上,您将所有对象都放在一个列表中,并将一个 si 的输出传递给下一个 si。这是一个天真的实现,但你可以添加泛型和你需要的一切

public class BasicPipelinePattern {
List<Filter> filters;

public Object process(Object input) {
for (Filter c : filters) {
try {
input = c.apply(input);
} catch (Exception e) {
// exception handling
}
}
return input;
}

}

public interface Filter {
public Object apply(Object o);
}

关于java - 增量代码的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30732151/

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